Fix parsing JSON with large integers (#9674)
authorsfan5 <sfan5@live.de>
Wed, 15 Apr 2020 06:01:28 +0000 (08:01 +0200)
committerGitHub <noreply@github.com>
Wed, 15 Apr 2020 06:01:28 +0000 (08:01 +0200)
src/script/common/c_content.cpp

index d73ecedab5fbf61b85a68d2d7412eeaf52c2582d..25dada7578cc6d592ed9c3a699d4402e79aee2a9 100644 (file)
@@ -1671,10 +1671,10 @@ static bool push_json_value_helper(lua_State *L, const Json::Value &value,
                        lua_pushvalue(L, nullindex);
                        break;
                case Json::intValue:
-                       lua_pushinteger(L, value.asInt());
+                       lua_pushinteger(L, value.asLargestInt());
                        break;
                case Json::uintValue:
-                       lua_pushinteger(L, value.asUInt());
+                       lua_pushinteger(L, value.asLargestUInt());
                        break;
                case Json::realValue:
                        lua_pushnumber(L, value.asDouble());
@@ -1700,7 +1700,7 @@ static bool push_json_value_helper(lua_State *L, const Json::Value &value,
                        lua_createtable(L, 0, value.size());
                        for (Json::Value::const_iterator it = value.begin();
                                        it != value.end(); ++it) {
-#ifndef JSONCPP_STRING
+#if !defined(JSONCPP_STRING) && (JSONCPP_VERSION_MAJOR < 1 || JSONCPP_VERSION_MINOR < 9)
                                const char *str = it.memberName();
                                lua_pushstring(L, str ? str : "");
 #else