Module: wine Branch: master Commit: b48e80a520af5720adc46a39cfa724a7f3ae45f4 URL: https://source.winehq.org/git/wine.git/?a=commit;h=b48e80a520af5720adc46a39c...
Author: Piotr Caban piotr@codeweavers.com Date: Wed May 19 15:26:21 2021 +0200
msvcrt: Import remainderf implementation from musl.
Signed-off-by: Piotr Caban piotr@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
configure | 1 - configure.ac | 1 - dlls/msvcrt/math.c | 11 +++++++---- dlls/msvcrt/unixlib.c | 14 -------------- dlls/msvcrt/unixlib.h | 1 - include/config.h.in | 3 --- 6 files changed, 7 insertions(+), 24 deletions(-)
diff --git a/configure b/configure index 827d17d7500..44077d727fe 100755 --- a/configure +++ b/configure @@ -19638,7 +19638,6 @@ for ac_func in \ log1pf \ log2 \ log2f \ - remainderf \ tgamma \ tgammaf
diff --git a/configure.ac b/configure.ac index 8b319923816..56a4a75ac08 100644 --- a/configure.ac +++ b/configure.ac @@ -2678,7 +2678,6 @@ AC_CHECK_FUNCS(\ log1pf \ log2 \ log2f \ - remainderf \ tgamma \ tgammaf ) diff --git a/dlls/msvcrt/math.c b/dlls/msvcrt/math.c index 6c856700f94..8ac545ae758 100644 --- a/dlls/msvcrt/math.c +++ b/dlls/msvcrt/math.c @@ -5488,13 +5488,16 @@ double CDECL remainder(double x, double y)
/********************************************************************* * remainderf (MSVCR120.@) + * + * Copied from musl: src/math/remainderf.c */ float CDECL remainderf(float x, float y) { - /* this matches 64-bit Windows. 32-bit Windows is slightly different */ - if(!isfinite(x)) *_errno() = EDOM; - if(isnan(y) || y==0.0f) *_errno() = EDOM; - return unix_funcs->remainderf( x, y ); + int q; +#if _MSVCR_VER == 120 && defined(__x86_64__) + if (isnan(x) || isnan(y)) *_errno() = EDOM; +#endif + return remquof(x, y, &q); }
/********************************************************************* diff --git a/dlls/msvcrt/unixlib.c b/dlls/msvcrt/unixlib.c index b1f824f4c72..da253d9b55c 100644 --- a/dlls/msvcrt/unixlib.c +++ b/dlls/msvcrt/unixlib.c @@ -475,19 +475,6 @@ static float CDECL unix_powf( float x, float y ) return powf( x, y ); }
-/********************************************************************* - * remainderf - */ -static float CDECL unix_remainderf(float x, float y) -{ -#ifdef HAVE_REMAINDERF - return remainderf(x, y); -#else - FIXME( "not implemented\n" ); - return 0; -#endif -} - /********************************************************************* * sin */ @@ -621,7 +608,6 @@ static const struct unix_funcs funcs = unix_logbf, unix_pow, unix_powf, - unix_remainderf, unix_sin, unix_sinf, unix_sinh, diff --git a/dlls/msvcrt/unixlib.h b/dlls/msvcrt/unixlib.h index d301a9716cf..84e62fd133a 100644 --- a/dlls/msvcrt/unixlib.h +++ b/dlls/msvcrt/unixlib.h @@ -64,7 +64,6 @@ struct unix_funcs float (CDECL *logbf)(float x); double (CDECL *pow)(double x, double y); float (CDECL *powf)(float x, float y); - float (CDECL *remainderf)(float x, float y); double (CDECL *sin)(double x); float (CDECL *sinf)(float x); double (CDECL *sinh)(double x); diff --git a/include/config.h.in b/include/config.h.in index 58325f3df92..72e981821da 100644 --- a/include/config.h.in +++ b/include/config.h.in @@ -630,9 +630,6 @@ /* Define to 1 if you have the `readlink' function. */ #undef HAVE_READLINK
-/* Define to 1 if you have the `remainderf' function. */ -#undef HAVE_REMAINDERF - /* Define to 1 if the system has the type `request_sense'. */ #undef HAVE_REQUEST_SENSE