aboutsummaryrefslogtreecommitdiff
path: root/src/lj_api.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lj_api.c')
-rw-r--r--src/lj_api.c15
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
242LUA_API int lua_isstring(lua_State *L, int idx) 243LUA_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);