aboutsummaryrefslogtreecommitdiff
path: root/lauxlib.c
diff options
context:
space:
mode:
authorRoberto Ierusalimschy <roberto@inf.puc-rio.br>2013-06-27 15:32:33 -0300
committerRoberto Ierusalimschy <roberto@inf.puc-rio.br>2013-06-27 15:32:33 -0300
commit66d046833d39b6e33be4d3e10ce5c718d283caef (patch)
tree0d7ce2673ed0702eb0a5d32b841a2d6209decf1e /lauxlib.c
parent15fdbd26fe38f05c21fadca783cadafb61fc83b5 (diff)
downloadlua-66d046833d39b6e33be4d3e10ce5c718d283caef.tar.gz
lua-66d046833d39b6e33be4d3e10ce5c718d283caef.tar.bz2
lua-66d046833d39b6e33be4d3e10ce5c718d283caef.zip
no need to check "bad conversion number->int;" in luaL_checkversion,
as now Lua does not use tricks for the conversion, but there is a need to check the sizes of number types, as they can be different in two modules
Diffstat (limited to 'lauxlib.c')
-rw-r--r--lauxlib.c18
1 files changed, 6 insertions, 12 deletions
diff --git a/lauxlib.c b/lauxlib.c
index d31fac83..6a6dd253 100644
--- a/lauxlib.c
+++ b/lauxlib.c
@@ -1,5 +1,5 @@
1/* 1/*
2** $Id: lauxlib.c,v 1.253 2013/06/14 20:46:40 roberto Exp roberto $ 2** $Id: lauxlib.c,v 1.254 2013/06/25 14:05:26 roberto Exp roberto $
3** Auxiliary functions for building Lua libraries 3** Auxiliary functions for building Lua libraries
4** See Copyright Notice in lua.h 4** See Copyright Notice in lua.h
5*/ 5*/
@@ -860,7 +860,6 @@ LUALIB_API void luaL_openlib (lua_State *L, const char *libname,
860** Returns with only the table at the stack. 860** Returns with only the table at the stack.
861*/ 861*/
862LUALIB_API void luaL_setfuncs (lua_State *L, const luaL_Reg *l, int nup) { 862LUALIB_API void luaL_setfuncs (lua_State *L, const luaL_Reg *l, int nup) {
863 luaL_checkversion(L);
864 luaL_checkstack(L, nup, "too many upvalues"); 863 luaL_checkstack(L, nup, "too many upvalues");
865 for (; l->name != NULL; l++) { /* fill the table with given functions */ 864 for (; l->name != NULL; l++) { /* fill the table with given functions */
866 int i; 865 int i;
@@ -955,20 +954,15 @@ LUALIB_API lua_State *luaL_newstate (void) {
955} 954}
956 955
957 956
958LUALIB_API void luaL_checkversion_ (lua_State *L, lua_Number ver) { 957LUALIB_API void luaL_checkversion_ (lua_State *L, int ver, size_t sz) {
959 const lua_Number *v = lua_version(L); 958 const lua_Number *v = lua_version(L);
960 if (v != lua_version(NULL)) 959 if (v != lua_version(NULL))
961 luaL_error(L, "multiple Lua VMs detected"); 960 luaL_error(L, "multiple Lua VMs detected");
962 else if (*v != ver) 961 else if (*v != ver)
963 luaL_error(L, "version mismatch: app. needs %f, Lua core provides %f", 962 luaL_error(L, "version mismatch: app. needs %d, Lua core provides %f",
964 ver, *v); 963 ver, *v);
965 /* check conversions number -> integer types */ 964 /* check numeric types */
966 lua_pushnumber(L, -(lua_Number)0x1234); 965 if (sz != LUAL_NUMSIZES)
967 lua_pushnumber(L, (lua_Number)0x4321); 966 luaL_error(L, "core and library have incompatible numeric types");
968 if (lua_tointeger(L, -2) != -0x1234 ||
969 lua_tounsigned(L, -1) != (lua_Unsigned)0x4321)
970 luaL_error(L, "bad conversion number->int;"
971 " must recompile Lua with proper settings");
972 lua_pop(L, 2);
973} 967}
974 968