(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:
norris 1998-06-23 20:53:12 +00:00
Родитель ca8463d4f8
Коммит 5e3ef1a221
1 изменённых файлов: 12 добавлений и 2 удалений

Просмотреть файл

@ -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;
}