<div dir="ltr"><div><br></div><div><br></div><div>---</div><div> dlls/msvcrt/math.c | 17 ++++++++---------</div><div> 1 file changed, 8 insertions(+), 9 deletions(-)</div><div><br></div><div>diff --git a/dlls/msvcrt/math.c b/dlls/msvcrt/math.c</div><div>index 73f01aa..d4b1794 100644</div><div>--- a/dlls/msvcrt/math.c</div><div>+++ b/dlls/msvcrt/math.c</div><div>@@ -46,8 +46,9 @@ WINE_DEFAULT_DEBUG_CHANNEL(msvcrt);</div><div> #endif</div><div> #endif</div><div> </div><div>+/* FIXME: Doesnot work with -NAN and -0. */</div><div> #ifndef signbit</div><div>-#define signbit(x) 0</div><div>+#define signbit(x) ((x) < 0)</div><div> #endif</div><div> </div><div> typedef int (CDECL *MSVCRT_matherr_func)(struct MSVCRT__exception *);</div><div>@@ -88,10 +89,9 @@ float CDECL MSVCRT__chgsignf( float num )</div><div>  */</div><div> float CDECL MSVCRT__copysignf( float num, float sign )</div><div> {</div><div>-    /* FIXME: Behaviour for Nan/Inf? */</div><div>-    if (sign < 0.0)</div><div>-        return num < 0.0 ? num : -num;</div><div>-    return num < 0.0 ? -num : num;</div><div>+    if (signbit(sign))</div><div>+        return signbit(num) ? num : -num;</div><div>+    return signbit(num) ? -num : num;</div><div> }</div><div> </div><div> /*********************************************************************</div><div>@@ -1227,10 +1227,9 @@ int CDECL _controlfp_s(unsigned int *cur, unsigned int newval, unsigned int mask</div><div>  */</div><div> double CDECL MSVCRT__copysign(double num, double sign)</div><div> {</div><div>-  /* FIXME: Behaviour for Nan/Inf? */</div><div>-  if (sign < 0.0)</div><div>-    return num < 0.0 ? num : -num;</div><div>-  return num < 0.0 ? -num : num;</div><div>+  if (signbit(sign))</div><div>+    return signbit(num) ? num : -num;</div><div>+  return signbit(num) ? -num : num;</div><div> }</div><div> </div><div> /*********************************************************************</div><div>-- </div><div>2.3.3</div><div><br></div></div>