瀏覽代碼

dtoolbase: Fix bad double-prec NaN/inf detection in release build

Fixes #987
Closes #988
LD 5 年之前
父節點
當前提交
9f0fc0a594
共有 1 個文件被更改,包括 2 次插入2 次删除
  1. 2 2
      dtool/src/dtoolbase/cmath.I

+ 2 - 2
dtool/src/dtoolbase/cmath.I

@@ -351,7 +351,7 @@ cnan(double v) {
 #if __FINITE_MATH_ONLY__
 #if __FINITE_MATH_ONLY__
   // GCC's isnan breaks when using -ffast-math.
   // GCC's isnan breaks when using -ffast-math.
   union { double d; uint64_t x; } u = { v };
   union { double d; uint64_t x; } u = { v };
-  return ((u.x << 1) > 0xff70000000000000ull);
+  return ((u.x << 1) > 0xffe0000000000000ull);
 #elif !defined(_WIN32)
 #elif !defined(_WIN32)
   return std::isnan(v);
   return std::isnan(v);
 #else
 #else
@@ -383,7 +383,7 @@ cinf(double v) {
 #if __FINITE_MATH_ONLY__
 #if __FINITE_MATH_ONLY__
   // GCC's isinf breaks when using -ffast-math.
   // GCC's isinf breaks when using -ffast-math.
   union { double d; uint64_t x; } u = { v };
   union { double d; uint64_t x; } u = { v };
-  return ((u.x << 1) == 0xff70000000000000ull);
+  return ((u.x << 1) == 0xffe0000000000000ull);
 #elif !defined(_WIN32)
 #elif !defined(_WIN32)
   return std::isinf(v);
   return std::isinf(v);
 #else
 #else