'luaL_checkversion' also checks convertions (number to integer types)

This commit is contained in:
Roberto Ierusalimschy 2010-10-29 10:52:21 -02:00
parent b9f371a3c2
commit 9be89a1864

View File

@ -1,5 +1,5 @@
/*
** $Id: lauxlib.c,v 1.222 2010/10/25 19:01:37 roberto Exp roberto $
** $Id: lauxlib.c,v 1.223 2010/10/25 20:31:11 roberto Exp roberto $
** Auxiliary functions for building Lua libraries
** See Copyright Notice in lua.h
*/
@ -876,5 +876,12 @@ LUALIB_API void luaL_checkversion_ (lua_State *L, lua_Number ver) {
else if (*v != ver)
luaL_error(L, "version mismatch: app. needs %d, Lua core provides %f",
ver, *v);
/* check conversions number -> integer types */
lua_pushnumber(L, -(lua_Number)0x1234);
if (lua_tointeger(L, -1) != -0x1234 ||
lua_tounsigned(L, -1) != (lua_Unsigned)-0x1234)
luaL_error(L, "bad conversion number->int;"
" must recompile Lua with proper settings");
lua_pop(L, 1);
}