Ticket #3848: conversionsfix.2.patch
File conversionsfix.2.patch, 4.2 KB (added by , 7 years ago) |
---|
-
source/scriptinterface/ScriptConversions.cpp
diff --git a/source/scriptinterface/ScriptConversions.cpp b/source/scriptinterface/ScriptConversions.cpp index fd75a8b497..b1a89c6c1a 100644
a b template<> bool ScriptInterface::FromJSVal<u8>(JSContext* cx, JS::HandleValue v, 116 116 return true; 117 117 } 118 118 119 template<> bool ScriptInterface::FromJSVal< long>(JSContext* cx, JS::HandleValue v, long& out)119 template<> bool ScriptInterface::FromJSVal<i64>(JSContext* cx, JS::HandleValue v, i64& out) 120 120 { 121 121 JSAutoRequest rq(cx); 122 122 i64 tmp; 123 123 bool ok = JS::ToInt64(cx, v, &tmp); 124 out = ( long)tmp;124 out = (i64)tmp; 125 125 return ok; 126 126 } 127 127 128 template<> bool ScriptInterface::FromJSVal<u nsigned long>(JSContext* cx, JS::HandleValue v, unsigned long& out)128 template<> bool ScriptInterface::FromJSVal<u64>(JSContext* cx, JS::HandleValue v, u64& out) 129 129 { 130 130 JSAutoRequest rq(cx); 131 131 u64 tmp; 132 132 bool ok = JS::ToUint64(cx, v, &tmp); 133 out = (u nsigned long)tmp;133 out = (u64)tmp; 134 134 return ok; 135 135 } 136 136 … … template<> void ScriptInterface::ToJSVal<u32>(JSContext* UNUSED(cx), JS::Mutable 294 294 ret.set(JS::NumberValue(val)); 295 295 } 296 296 297 template<> void ScriptInterface::ToJSVal< long>(JSContext* UNUSED(cx), JS::MutableHandleValue ret, const long& val)297 template<> void ScriptInterface::ToJSVal<i64>(JSContext* UNUSED(cx), JS::MutableHandleValue ret, const i64& val) 298 298 { 299 299 ret.set(JS::NumberValue((int)val)); 300 300 } 301 301 302 template<> void ScriptInterface::ToJSVal<u nsigned long>(JSContext* UNUSED(cx), JS::MutableHandleValue ret, const unsigned long& val)302 template<> void ScriptInterface::ToJSVal<u64>(JSContext* UNUSED(cx), JS::MutableHandleValue ret, const u64& val) 303 303 { 304 304 ret.set(JS::NumberValue((int)val)); 305 305 } -
source/scriptinterface/tests/test_ScriptConversions.h
diff --git a/source/scriptinterface/tests/test_ScriptConversions.h b/source/scriptinterface/tests/test_ScriptConversions.h index 374f1c99a0..2aeee476b6 100644
a b 1 /* Copyright (C) 201 6Wildfire Games.1 /* Copyright (C) 2017 Wildfire Games. 2 2 * This file is part of 0 A.D. 3 3 * 4 4 * 0 A.D. is free software: you can redistribute it and/or modify … … public: 141 141 roundtrip<u32>(1073741824, "1073741824"); // JSVAL_INT_MAX+1 142 142 } 143 143 144 roundtrip<i64>(0, "0"); 145 roundtrip<i64>(123, "123"); 146 roundtrip<i64>(-123, "-123"); 147 roundtrip<i64>(1073741822, "1073741822"); // JSVAL_INT_MAX-1 148 roundtrip<i64>(1073741823, "1073741823"); // JSVAL_INT_MAX 149 roundtrip<i64>(-1073741823, "-1073741823"); // JSVAL_INT_MIN+1 150 roundtrip<i64>(-1073741824, "-1073741824"); // JSVAL_INT_MIN 151 roundtrip<i64>(1073741824, "1073741824"); // JSVAL_INT_MAX+1 152 roundtrip<i64>(-1073741825, "-1073741825"); // JSVAL_INT_MIN-1 153 154 roundtrip<u64>(0, "0"); 155 roundtrip<u64>(123, "123"); 156 roundtrip<u64>(1073741822, "1073741822"); // JSVAL_INT_MAX-1 157 roundtrip<u64>(1073741823, "1073741823"); // JSVAL_INT_MAX 158 roundtrip<u64>(1073741824, "1073741824"); // JSVAL_INT_MAX+1 159 144 160 std::string s1 = "test"; 145 161 s1[1] = '\0'; 146 162 std::string s2 = "тест"; … … public: 202 218 TS_ASSERT(val6.isInt32()); 203 219 TS_ASSERT(val7.isInt32()); 204 220 TS_ASSERT(val8.isDouble()); 221 222 JS::RootedValue val9(cx), val10(cx), val11(cx), val12(cx), val13(cx), val14(cx), val15(cx), val16(cx), val17(cx); 223 ScriptInterface::ToJSVal<i64>(cx, &val9, 0); 224 ScriptInterface::ToJSVal<i64>(cx, &val10, 2147483646); // JSVAL_INT_MAX-1 225 ScriptInterface::ToJSVal<i64>(cx, &val11, 2147483647); // JSVAL_INT_MAX 226 ScriptInterface::ToJSVal<i64>(cx, &val12, -2147483647); // JSVAL_INT_MIN+1 227 ScriptInterface::ToJSVal<i64>(cx, &val13, -(i64)2147483648u); // JSVAL_INT_MIN 228 TS_ASSERT(val9.isInt32()); 229 TS_ASSERT(val10.isInt32()); 230 TS_ASSERT(val11.isInt32()); 231 TS_ASSERT(val12.isInt32()); 232 TS_ASSERT(val13.isInt32()); 233 234 ScriptInterface::ToJSVal<u64>(cx, &val14, 0); 235 ScriptInterface::ToJSVal<u64>(cx, &val15, 2147483646u); // JSVAL_INT_MAX-1 236 ScriptInterface::ToJSVal<u64>(cx, &val16, 2147483647u); // JSVAL_INT_MAX 237 ScriptInterface::ToJSVal<u64>(cx, &val17, 2147483648u); // JSVAL_INT_MAX+1 238 TS_ASSERT(val14.isInt32()); 239 TS_ASSERT(val15.isInt32()); 240 TS_ASSERT(val16.isInt32()); 241 TS_ASSERT(val17.isInt32()); 205 242 } 206 243 207 244 void test_nonfinite()