Просмотр исходного кода

change: lpb_pushinteger在32bit vm的行为还原到原本的行为

Wendal Chen 2 лет назад
Родитель
Сommit
ffa6ef561b
1 измененных файлов с 9 добавлено и 1 удалено
  1. 9 1
      components/serialization/protobuf/luat_lib_protobuf.c

+ 9 - 1
components/serialization/protobuf/luat_lib_protobuf.c

@@ -390,8 +390,16 @@ static void lpb_pushinteger(lua_State *L, int64_t n, int mode) {
         if (neg) *--p = '-';
         *--p = '#';
         lua_pushstring(L, p);
-    } else // 原版是判断lua_Integer是否8字节
+#ifdef LUAT_CONF_VM_64bit
+    }
+    else 
+        lua_pushinteger(L, (lua_Integer)n);
+#else
+    } else if (LUA_VERSION_NUM >= 503 && (n >> 32) == 0)
         lua_pushinteger(L, (lua_Integer)n);
+    else
+        lua_pushnumber(L, (lua_Number)n);
+#endif
 }
 
 typedef union lpb_Value {