diff --git a/Plugins/Android/libs/armeabi-v7a/libtolua.so b/Plugins/Android/libs/armeabi-v7a/libtolua.so index 3542e4a6..4d954e3d 100644 Binary files a/Plugins/Android/libs/armeabi-v7a/libtolua.so and b/Plugins/Android/libs/armeabi-v7a/libtolua.so differ diff --git a/Plugins/Android/libs/x86/libtolua.so b/Plugins/Android/libs/x86/libtolua.so index 502db93e..1aa95bb0 100644 Binary files a/Plugins/Android/libs/x86/libtolua.so and b/Plugins/Android/libs/x86/libtolua.so differ diff --git a/Plugins/iOS/libtolua.a b/Plugins/iOS/libtolua.a index 17772907..6cac6cbd 100644 Binary files a/Plugins/iOS/libtolua.a and b/Plugins/iOS/libtolua.a differ diff --git a/Plugins/tolua.bundle/Contents/Info.plist b/Plugins/tolua.bundle/Contents/Info.plist index 9980e57a..d87fb49a 100644 --- a/Plugins/tolua.bundle/Contents/Info.plist +++ b/Plugins/tolua.bundle/Contents/Info.plist @@ -59,6 +59,6 @@ DTXcodeBuild 8E2002 NSHumanReadableCopyright - Copyright © 2013 topameng. All rights reserved. + Copyright © 2014 topameng. All rights reserved. diff --git a/Plugins/tolua.bundle/Contents/MacOS/tolua b/Plugins/tolua.bundle/Contents/MacOS/tolua index 0ef23e0f..e577af2a 100644 Binary files a/Plugins/tolua.bundle/Contents/MacOS/tolua and b/Plugins/tolua.bundle/Contents/MacOS/tolua differ diff --git a/Plugins/x86/tolua.dll b/Plugins/x86/tolua.dll index d22d4696..87fec5ca 100644 Binary files a/Plugins/x86/tolua.dll and b/Plugins/x86/tolua.dll differ diff --git a/Plugins/x86_64/tolua.dll b/Plugins/x86_64/tolua.dll index 14f77839..8c888e90 100644 Binary files a/Plugins/x86_64/tolua.dll and b/Plugins/x86_64/tolua.dll differ diff --git a/int64.c b/int64.c index 3fcf308f..551beefc 100644 --- a/int64.c +++ b/int64.c @@ -91,17 +91,17 @@ LUALIB_API bool tolua_isint64(lua_State* L, int pos) LUALIB_API void tolua_pushint64(lua_State* L, int64_t n) { - if (toluaflags & FLAG_INT64) + /*if (toluaflags & FLAG_INT64) { lua_pushinteger(L, (lua_Integer)n); } else - { + {*/ int64_t* p = (int64_t*)lua_newuserdata(L, sizeof(int64_t)); *p = n; lua_getref(L, LUA_RIDX_INT64); lua_setmetatable(L, -2); - } + //} } //转换一个字符串为 int64 @@ -211,6 +211,12 @@ static int _int64div(lua_State* L) { int64_t lhs = tolua_checkint64(L, 1); int64_t rhs = tolua_checkint64(L, 2); + + if (rhs == 0) + { + return luaL_error(L, "div by zero"); + } + tolua_pushint64(L, lhs / rhs); return 1; } @@ -272,7 +278,7 @@ static int _int64eq(lua_State* L) static int _int64equals(lua_State* L) { int64_t lhs = tolua_checkint64(L, 1); - int64_t rhs = tolua_checkint64(L, 2); + int64_t rhs = tolua_toint64(L, 2); lua_pushboolean(L, lhs == rhs); return 1; } diff --git a/tolua.h b/tolua.h index bcdad6f4..4934a98b 100644 --- a/tolua.h +++ b/tolua.h @@ -39,7 +39,6 @@ #define TOLUA_NOPEER LUA_REGISTRYINDEX #define FLAG_INDEX_ERROR 1 #define FLAG_INT64 2 -#define FLAG_UINT64 4 #define MAX_ITEM 512 @@ -47,6 +46,7 @@ void tolua_openint64(lua_State* L); int tolua_newint64(lua_State* L); +void tolua_pushint64(lua_State* L, int64_t n); void tolua_openuint64(lua_State* L); int tolua_newuint64(lua_State* L); diff --git a/uint64.c b/uint64.c index b500758d..2a4c440d 100644 --- a/uint64.c +++ b/uint64.c @@ -91,17 +91,10 @@ LUALIB_API bool tolua_isuint64(lua_State *L, int pos) LUALIB_API void tolua_pushuint64(lua_State *L, uint64_t n) { - if (toluaflags & FLAG_UINT64) - { - lua_pushinteger(L, (lua_Integer)n); - } - else - { - uint64_t* p = (uint64_t*)lua_newuserdata(L, sizeof(uint64_t)); - *p = n; - lua_getref(L, LUA_RIDX_UINT64); - lua_setmetatable(L, -2); - } + uint64_t* p = (uint64_t*)lua_newuserdata(L, sizeof(uint64_t)); + *p = n; + lua_getref(L, LUA_RIDX_UINT64); + lua_setmetatable(L, -2); } //转换一个字符串为 uint64 @@ -194,7 +187,15 @@ static int _uint64sub(lua_State *L) { uint64_t lhs = tolua_checkuint64(L, 1); uint64_t rhs = tolua_checkuint64(L, 2); - tolua_pushuint64(L, lhs - rhs); + + if (lhs > rhs) + { + tolua_pushuint64(L, lhs - rhs); + } + else + { + tolua_pushint64(L, lhs - rhs); + } return 1; } @@ -210,6 +211,12 @@ static int _uint64div(lua_State *L) { uint64_t lhs = tolua_checkuint64(L, 1); uint64_t rhs = tolua_checkuint64(L, 2); + + if (rhs == 0) + { + return luaL_error(L, "div by zero"); + } + tolua_pushuint64(L, lhs / rhs); return 1; } @@ -271,7 +278,7 @@ static int _uint64eq(lua_State *L) static int _uint64equals(lua_State *L) { uint64_t lhs = tolua_checkuint64(L, 1); - uint64_t rhs = tolua_checkuint64(L, 2); + uint64_t rhs = tolua_touint64(L, 2); lua_pushboolean(L, lhs == rhs); return 1; } diff --git a/window/x86/libluajit.a b/window/x86/libluajit.a index e09ddadd..f441b5be 100644 Binary files a/window/x86/libluajit.a and b/window/x86/libluajit.a differ diff --git a/window/x86_64/libluajit.a b/window/x86_64/libluajit.a index 614299ab..0e9b2cef 100644 Binary files a/window/x86_64/libluajit.a and b/window/x86_64/libluajit.a differ