diff options
Diffstat (limited to 'c-api/compat-5.3.c')
-rw-r--r-- | c-api/compat-5.3.c | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/c-api/compat-5.3.c b/c-api/compat-5.3.c index b82c654..ebaf03f 100644 --- a/c-api/compat-5.3.c +++ b/c-api/compat-5.3.c | |||
@@ -205,11 +205,18 @@ COMPAT53_API void lua_rawsetp (lua_State *L, int i, const void *p) { | |||
205 | 205 | ||
206 | 206 | ||
207 | COMPAT53_API lua_Integer lua_tointegerx (lua_State *L, int i, int *isnum) { | 207 | COMPAT53_API lua_Integer lua_tointegerx (lua_State *L, int i, int *isnum) { |
208 | lua_Integer n = lua_tointeger(L, i); | 208 | int ok = 0; |
209 | if (isnum != NULL) { | 209 | lua_Number n = lua_tonumberx(L, i, &ok); |
210 | *isnum = (n != 0 || lua_isnumber(L, i)); | 210 | lua_Integer j = (lua_tointeger)(L, i); /* native lua_tointeger */ |
211 | if (isnum == NULL) | ||
212 | isnum = &ok; | ||
213 | if (ok && n == j) { | ||
214 | *isnum = 1; | ||
215 | return j; | ||
216 | } else { | ||
217 | *isnum = 0; | ||
218 | return 0; | ||
211 | } | 219 | } |
212 | return n; | ||
213 | } | 220 | } |
214 | 221 | ||
215 | 222 | ||