diff options
Diffstat (limited to 'generator/lua.ml')
-rw-r--r-- | generator/lua.ml | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/generator/lua.ml b/generator/lua.ml index 603b396c..7e5779f6 100644 --- a/generator/lua.ml +++ b/generator/lua.ml @@ -645,10 +645,19 @@ get_int64 (lua_State *L, int index) int64_t r; const char *s; - s = luaL_checkstring (L, index); - if (sscanf (s, \"%%\" SCNi64, &r) != 1) - return luaL_error (L, \"int64 parameter expected\"); - return r; + switch (lua_type (L, index)) { + case LUA_TSTRING: + s = luaL_checkstring (L, index); + if (sscanf (s, \"%%\" SCNi64, &r) != 1) + return luaL_error (L, \"int64 parameter expected\"); + return r; + + case LUA_TNUMBER: + return luaL_checkint (L, index); + + default: + return luaL_error (L, \"expecting 64 bit integer\"); + } } static void |