mirror of
https://gitea.wildfiregames.com/0ad/0ad.git
synced 2026-09-21 20:06:40 +00:00
Revert 64bit number conversions added in c0ca70efd2, don't add the previous long and unsigned long conversions back and use double in the Replay menu.
64bit conversions (including the long ones) are not safe, because not every number can be converted to the 2^53 JS numbers and pretending to do so is asking for bugs. Explicitly use the double type in the Replay menu, because std::time_t is unspecified and some platforms like Ubuntu yakkety:i386 fail to build, looking for long. Double should work for the next 285 million years, becomes consistent with SavedGame.cpp, is tested by test_ScriptConversions.cpp and doesn't pretend to cover all 64bit numbers. Patch By: echotangoecho Differential Revision: https://code.wildfiregames.com/D205 Refs #3848 D84 D112 This was SVN commit r19367.
This commit is contained in:
@@ -141,22 +141,6 @@ public:
|
||||
roundtrip<u32>(1073741824, "1073741824"); // JSVAL_INT_MAX+1
|
||||
}
|
||||
|
||||
roundtrip<i64>(0, "0");
|
||||
roundtrip<i64>(123, "123");
|
||||
roundtrip<i64>(-123, "-123");
|
||||
roundtrip<i64>(1073741822, "1073741822"); // JSVAL_INT_MAX-1
|
||||
roundtrip<i64>(1073741823, "1073741823"); // JSVAL_INT_MAX
|
||||
roundtrip<i64>(-1073741823, "-1073741823"); // JSVAL_INT_MIN+1
|
||||
roundtrip<i64>(-1073741824, "-1073741824"); // JSVAL_INT_MIN
|
||||
roundtrip<i64>(1073741824, "1073741824"); // JSVAL_INT_MAX+1
|
||||
roundtrip<i64>(-1073741825, "-1073741825"); // JSVAL_INT_MIN-1
|
||||
|
||||
roundtrip<u64>(0, "0");
|
||||
roundtrip<u64>(123, "123");
|
||||
roundtrip<u64>(1073741822, "1073741822"); // JSVAL_INT_MAX-1
|
||||
roundtrip<u64>(1073741823, "1073741823"); // JSVAL_INT_MAX
|
||||
roundtrip<u64>(1073741824, "1073741824"); // JSVAL_INT_MAX+1
|
||||
|
||||
std::string s1 = "test";
|
||||
s1[1] = '\0';
|
||||
std::string s2 = "тест";
|
||||
@@ -218,27 +202,6 @@ public:
|
||||
TS_ASSERT(val6.isInt32());
|
||||
TS_ASSERT(val7.isInt32());
|
||||
TS_ASSERT(val8.isDouble());
|
||||
|
||||
JS::RootedValue val9(cx), val10(cx), val11(cx), val12(cx), val13(cx), val14(cx), val15(cx), val16(cx), val17(cx);
|
||||
ScriptInterface::ToJSVal<i64>(cx, &val9, 0);
|
||||
ScriptInterface::ToJSVal<i64>(cx, &val10, 2147483646); // JSVAL_INT_MAX-1
|
||||
ScriptInterface::ToJSVal<i64>(cx, &val11, 2147483647); // JSVAL_INT_MAX
|
||||
ScriptInterface::ToJSVal<i64>(cx, &val12, -2147483647); // JSVAL_INT_MIN+1
|
||||
ScriptInterface::ToJSVal<i64>(cx, &val13, -(i64)2147483648u); // JSVAL_INT_MIN
|
||||
TS_ASSERT(val9.isInt32());
|
||||
TS_ASSERT(val10.isInt32());
|
||||
TS_ASSERT(val11.isInt32());
|
||||
TS_ASSERT(val12.isInt32());
|
||||
TS_ASSERT(val13.isInt32());
|
||||
|
||||
ScriptInterface::ToJSVal<u64>(cx, &val14, 0);
|
||||
ScriptInterface::ToJSVal<u64>(cx, &val15, 2147483646u); // JSVAL_INT_MAX-1
|
||||
ScriptInterface::ToJSVal<u64>(cx, &val16, 2147483647u); // JSVAL_INT_MAX
|
||||
ScriptInterface::ToJSVal<u64>(cx, &val17, 2147483648u); // JSVAL_INT_MAX+1
|
||||
TS_ASSERT(val14.isInt32());
|
||||
TS_ASSERT(val15.isInt32());
|
||||
TS_ASSERT(val16.isInt32());
|
||||
TS_ASSERT(val17.isInt32());
|
||||
}
|
||||
|
||||
void test_nonfinite()
|
||||
|
||||
Reference in New Issue
Block a user