зеркало из https://github.com/mozilla/pjs.git
(Not part of Communicator build)
Fix 111202 ECMA: division and modulo operator special cases (/ %) Another instance of the MSVC NaN == 0 bug.
This commit is contained in:
Родитель
ca8463d4f8
Коммит
5e3ef1a221
|
@ -111,8 +111,18 @@ js_compare_atom_keys(const void *k1, const void *k2)
|
|||
v1 = (jsval)k1, v2 = (jsval)k2;
|
||||
if (JSVAL_IS_STRING(v1) && JSVAL_IS_STRING(v2))
|
||||
return !js_CompareStrings(JSVAL_TO_STRING(v1), JSVAL_TO_STRING(v2));
|
||||
if (JSVAL_IS_DOUBLE(v1) && JSVAL_IS_DOUBLE(v2))
|
||||
return *JSVAL_TO_DOUBLE(v1) == *JSVAL_TO_DOUBLE(v2);
|
||||
if (JSVAL_IS_DOUBLE(v1) && JSVAL_IS_DOUBLE(v2)) {
|
||||
double d1 = *JSVAL_TO_DOUBLE(v1);
|
||||
double d2 = *JSVAL_TO_DOUBLE(v2);
|
||||
#ifdef XP_PC
|
||||
/* XXX MSVC miscompiles such that (NaN == 0) */
|
||||
if (JSDOUBLE_IS_NaN(d1))
|
||||
return JSDOUBLE_IS_NaN(d2);
|
||||
else if (JSDOUBLE_IS_NaN(d2))
|
||||
return JS_FALSE;
|
||||
#endif
|
||||
return d1 == d2;
|
||||
}
|
||||
return v1 == v2;
|
||||
}
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче