From 138e69cc55fb3e808206c3532b26063baa19d93b Mon Sep 17 00:00:00 2001 From: Roberto Ierusalimschy Date: Fri, 14 Jun 2013 15:34:49 -0300 Subject: correct error message for floating-point values out of (integer) range --- lauxlib.c | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/lauxlib.c b/lauxlib.c index 7cb6821e..17fc962c 100644 --- a/lauxlib.c +++ b/lauxlib.c @@ -1,5 +1,5 @@ /* -** $Id: lauxlib.c,v 1.250 2013/06/04 19:36:42 roberto Exp roberto $ +** $Id: lauxlib.c,v 1.251 2013/06/14 18:12:53 roberto Exp roberto $ ** Auxiliary functions for building Lua libraries ** See Copyright Notice in lua.h */ @@ -386,11 +386,22 @@ LUALIB_API lua_Number luaL_optnumber (lua_State *L, int narg, lua_Number def) { } +static void interror (lua_State *L, int narg) { + if (lua_type(L, narg) == LUA_TNUMBER) { + assert(!lua_isinteger(L, narg)); + luaL_argerror(L, narg, "float value out of range"); + } + else + tag_error(L, narg, LUA_TNUMBER); +} + + LUALIB_API lua_Integer luaL_checkinteger (lua_State *L, int narg) { int isnum; lua_Integer d = lua_tointegerx(L, narg, &isnum); - if (!isnum) - tag_error(L, narg, LUA_TNUMBER); + if (!isnum) { + interror(L, narg); + } return d; } @@ -399,7 +410,7 @@ LUALIB_API lua_Unsigned luaL_checkunsigned (lua_State *L, int narg) { int isnum; lua_Unsigned d = lua_tounsignedx(L, narg, &isnum); if (!isnum) - tag_error(L, narg, LUA_TNUMBER); + interror(L, narg); return d; } -- cgit v1.2.3-55-g6feb