diff options
Diffstat (limited to 'src/lj_api.c')
-rw-r--r-- | src/lj_api.c | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/src/lj_api.c b/src/lj_api.c index b807900d..bfd471d2 100644 --- a/src/lj_api.c +++ b/src/lj_api.c | |||
@@ -26,6 +26,7 @@ | |||
26 | #include "lj_lex.h" | 26 | #include "lj_lex.h" |
27 | #include "lj_bcdump.h" | 27 | #include "lj_bcdump.h" |
28 | #include "lj_parse.h" | 28 | #include "lj_parse.h" |
29 | #include "lj_strscan.h" | ||
29 | 30 | ||
30 | /* -- Common helper functions --------------------------------------------- */ | 31 | /* -- Common helper functions --------------------------------------------- */ |
31 | 32 | ||
@@ -236,7 +237,7 @@ LUA_API int lua_isnumber(lua_State *L, int idx) | |||
236 | { | 237 | { |
237 | cTValue *o = index2adr(L, idx); | 238 | cTValue *o = index2adr(L, idx); |
238 | TValue tmp; | 239 | TValue tmp; |
239 | return (tvisnumber(o) || (tvisstr(o) && lj_str_tonumber(strV(o), &tmp))); | 240 | return (tvisnumber(o) || (tvisstr(o) && lj_strscan_number(strV(o), &tmp))); |
240 | } | 241 | } |
241 | 242 | ||
242 | LUA_API int lua_isstring(lua_State *L, int idx) | 243 | LUA_API int lua_isstring(lua_State *L, int idx) |
@@ -320,7 +321,7 @@ LUA_API lua_Number lua_tonumber(lua_State *L, int idx) | |||
320 | TValue tmp; | 321 | TValue tmp; |
321 | if (LJ_LIKELY(tvisnumber(o))) | 322 | if (LJ_LIKELY(tvisnumber(o))) |
322 | return numberVnum(o); | 323 | return numberVnum(o); |
323 | else if (tvisstr(o) && lj_str_tonum(strV(o), &tmp)) | 324 | else if (tvisstr(o) && lj_strscan_num(strV(o), &tmp)) |
324 | return numV(&tmp); | 325 | return numV(&tmp); |
325 | else | 326 | else |
326 | return 0; | 327 | return 0; |
@@ -332,7 +333,7 @@ LUALIB_API lua_Number luaL_checknumber(lua_State *L, int idx) | |||
332 | TValue tmp; | 333 | TValue tmp; |
333 | if (LJ_LIKELY(tvisnumber(o))) | 334 | if (LJ_LIKELY(tvisnumber(o))) |
334 | return numberVnum(o); | 335 | return numberVnum(o); |
335 | else if (!(tvisstr(o) && lj_str_tonum(strV(o), &tmp))) | 336 | else if (!(tvisstr(o) && lj_strscan_num(strV(o), &tmp))) |
336 | lj_err_argt(L, idx, LUA_TNUMBER); | 337 | lj_err_argt(L, idx, LUA_TNUMBER); |
337 | return numV(&tmp); | 338 | return numV(&tmp); |
338 | } | 339 | } |
@@ -345,7 +346,7 @@ LUALIB_API lua_Number luaL_optnumber(lua_State *L, int idx, lua_Number def) | |||
345 | return numberVnum(o); | 346 | return numberVnum(o); |
346 | else if (tvisnil(o)) | 347 | else if (tvisnil(o)) |
347 | return def; | 348 | return def; |
348 | else if (!(tvisstr(o) && lj_str_tonum(strV(o), &tmp))) | 349 | else if (!(tvisstr(o) && lj_strscan_num(strV(o), &tmp))) |
349 | lj_err_argt(L, idx, LUA_TNUMBER); | 350 | lj_err_argt(L, idx, LUA_TNUMBER); |
350 | return numV(&tmp); | 351 | return numV(&tmp); |
351 | } | 352 | } |
@@ -360,7 +361,7 @@ LUA_API lua_Integer lua_tointeger(lua_State *L, int idx) | |||
360 | } else if (LJ_LIKELY(tvisnum(o))) { | 361 | } else if (LJ_LIKELY(tvisnum(o))) { |
361 | n = numV(o); | 362 | n = numV(o); |
362 | } else { | 363 | } else { |
363 | if (!(tvisstr(o) && lj_str_tonumber(strV(o), &tmp))) | 364 | if (!(tvisstr(o) && lj_strscan_number(strV(o), &tmp))) |
364 | return 0; | 365 | return 0; |
365 | if (tvisint(&tmp)) | 366 | if (tvisint(&tmp)) |
366 | return (lua_Integer)intV(&tmp); | 367 | return (lua_Integer)intV(&tmp); |
@@ -383,7 +384,7 @@ LUALIB_API lua_Integer luaL_checkinteger(lua_State *L, int idx) | |||
383 | } else if (LJ_LIKELY(tvisnum(o))) { | 384 | } else if (LJ_LIKELY(tvisnum(o))) { |
384 | n = numV(o); | 385 | n = numV(o); |
385 | } else { | 386 | } else { |
386 | if (!(tvisstr(o) && lj_str_tonumber(strV(o), &tmp))) | 387 | if (!(tvisstr(o) && lj_strscan_number(strV(o), &tmp))) |
387 | lj_err_argt(L, idx, LUA_TNUMBER); | 388 | lj_err_argt(L, idx, LUA_TNUMBER); |
388 | if (tvisint(&tmp)) | 389 | if (tvisint(&tmp)) |
389 | return (lua_Integer)intV(&tmp); | 390 | return (lua_Integer)intV(&tmp); |
@@ -408,7 +409,7 @@ LUALIB_API lua_Integer luaL_optinteger(lua_State *L, int idx, lua_Integer def) | |||
408 | } else if (tvisnil(o)) { | 409 | } else if (tvisnil(o)) { |
409 | return def; | 410 | return def; |
410 | } else { | 411 | } else { |
411 | if (!(tvisstr(o) && lj_str_tonumber(strV(o), &tmp))) | 412 | if (!(tvisstr(o) && lj_strscan_number(strV(o), &tmp))) |
412 | lj_err_argt(L, idx, LUA_TNUMBER); | 413 | lj_err_argt(L, idx, LUA_TNUMBER); |
413 | if (tvisint(&tmp)) | 414 | if (tvisint(&tmp)) |
414 | return (lua_Integer)intV(&tmp); | 415 | return (lua_Integer)intV(&tmp); |