[PATCH] ucrtbase: Don't differentiate for 64-bit in __fpe_flt_rounds.

Sven Baars sven.wine at gmail.com
Sat Oct 5 06:39:47 CDT 2019


The previous behavior was only present on w1064v1507, and not on
any other version of Windows (both older and newer).

Signed-off-by: Sven Baars <sven.wine at gmail.com>
---
 dlls/msvcrt/math.c         | 5 -----
 dlls/ucrtbase/tests/misc.c | 4 ++--
 2 files changed, 2 insertions(+), 7 deletions(-)

diff --git a/dlls/msvcrt/math.c b/dlls/msvcrt/math.c
index 6651df8c12..54f1853e33 100644
--- a/dlls/msvcrt/math.c
+++ b/dlls/msvcrt/math.c
@@ -1274,13 +1274,8 @@ int CDECL __fpe_flt_rounds(void)
     switch(fpc) {
         case MSVCRT__RC_CHOP: return 0;
         case MSVCRT__RC_NEAR: return 1;
-#ifdef _WIN64
-        case MSVCRT__RC_UP: return 3;
-        default: return 2;
-#else
         case MSVCRT__RC_UP: return 2;
         default: return 3;
-#endif
     }
 }
 #endif
diff --git a/dlls/ucrtbase/tests/misc.c b/dlls/ucrtbase/tests/misc.c
index aecbc9dca5..284c8f52ed 100644
--- a/dlls/ucrtbase/tests/misc.c
+++ b/dlls/ucrtbase/tests/misc.c
@@ -361,11 +361,11 @@ static void test___fpe_flt_rounds(void)
 
     ok((p__controlfp(_RC_UP, _RC_CHOP) & _RC_CHOP) == _RC_UP, "_controlfp(_RC_UP, _RC_CHOP) failed\n");
     ret = p___fpe_flt_rounds();
-    ok(ret == 2 + (sizeof(void*)>sizeof(int)), "__fpe_flt_rounds returned %d\n", ret);
+    ok(ret == 2 || broken(ret == 3) /* w1064v1507 */, "__fpe_flt_rounds returned %d\n", ret);
 
     ok((p__controlfp(_RC_DOWN, _RC_CHOP) & _RC_CHOP) == _RC_DOWN, "_controlfp(_RC_DOWN, _RC_CHOP) failed\n");
     ret = p___fpe_flt_rounds();
-    ok(ret == 3 - (sizeof(void*)>sizeof(int)), "__fpe_flt_rounds returned %d\n", ret);
+    ok(ret == 3 || broken(ret == 2) /* w1064v1507 */, "__fpe_flt_rounds returned %d\n", ret);
 
     ok((p__controlfp(_RC_CHOP, _RC_CHOP) & _RC_CHOP) == _RC_CHOP, "_controlfp(_RC_CHOP, _RC_CHOP) failed\n");
     ret = p___fpe_flt_rounds();
-- 
2.17.1




More information about the wine-devel mailing list