From 8ac83048247b97482c3792b48bfa036e9f4e7599 Mon Sep 17 00:00:00 2001 From: Ilari Liusvaara Date: Tue, 18 Apr 2017 19:25:07 +0300 Subject: [PATCH] Lua: Fix type confusion between signed and unsigned This bug seemed to cause all hell to break lose with negative numbers --- include/library/lua-base.hpp | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/include/library/lua-base.hpp b/include/library/lua-base.hpp index b77cbdaf..1b9d8a4a 100644 --- a/include/library/lua-base.hpp +++ b/include/library/lua-base.hpp @@ -514,7 +514,7 @@ public: int toboolean(int index) { return lua_toboolean(lua_handle, index); } const char* tolstring(int index, size_t *len) { return lua_tolstring(lua_handle, index, len); } lua_Number tonumber(int index) { return lua_tonumber(lua_handle, index); } - uint64_t tointeger(int index) { return LUA_INTEGER_POSTFIX(lua_to) (lua_handle, index); } + int64_t tointeger(int index) { return LUA_INTEGER_POSTFIX(lua_to) (lua_handle, index); } void gettable(int index) { lua_gettable(lua_handle, index); } int load(lua_Reader reader, void* data, const char* chunkname, const char* mode) { (void)mode; @@ -543,15 +543,13 @@ public: template void pushnumber(T val) { if(std::numeric_limits::is_integer || is_ss_int24::flag) - _pushinteger(val); + return LUA_INTEGER_POSTFIX(lua_push) (lua_handle, val); else - _pushnumber(val); + return lua_pushnumber(lua_handle, val); } void pushboolean(bool b) { lua_pushboolean(lua_handle, b); } void pushglobals() { LUA_LOADGLOBALS } private: - void _pushnumber(lua_Number n) { return lua_pushnumber(lua_handle, n); } - void _pushinteger(uint64_t n) { return LUA_INTEGER_POSTFIX(lua_push) (lua_handle, n); } static void builtin_oom(); static void builtin_soft_oom(int status); static void* builtin_alloc(void* user, void* old, size_t olds, size_t news); -- 2.11.4.GIT