diff options
author | Benoit Giannangeli <giann008@gmail.com> | 2017-05-28 11:54:09 +0200 |
---|---|---|
committer | Benoit Giannangeli <giann008@gmail.com> | 2017-05-28 11:54:09 +0200 |
commit | 03fa39649de945d5a392f460fd592f815534f69a (patch) | |
tree | e574b099dd5058be94fc9a3f5ab0f8bf878ea853 | |
parent | 8173e639527cffc583c9c6ad6e7fc0d43429ab50 (diff) | |
download | fengari-03fa39649de945d5a392f460fd592f815534f69a.tar.gz fengari-03fa39649de945d5a392f460fd592f815534f69a.tar.bz2 fengari-03fa39649de945d5a392f460fd592f815534f69a.zip |
lua_tonumberx
lua_tonumber should return 0 if argument is not convertible to a number.
But luaL_checknumber uses lua_tonumberx and tests isnum.
-> lua_tonumberx return false if argument is not convertible to a
number.
-rw-r--r-- | src/lapi.js | 5 | ||||
-rw-r--r-- | src/lauxlib.js | 2 | ||||
-rw-r--r-- | src/lua.js | 1 |
3 files changed, 7 insertions, 1 deletions
diff --git a/src/lapi.js b/src/lapi.js index 1dfd112..90533f7 100644 --- a/src/lapi.js +++ b/src/lapi.js @@ -720,6 +720,10 @@ const lua_tonumber = function(L, idx) { return n === false ? 0 : n; }; +const lua_tonumberx = function(L, idx) { + return lvm.tonumber(index2addr(L, idx)); +}; + const lua_touserdata = function(L, idx) { let o = index2addr(L, idx); switch (o.ttnov()) { @@ -1224,6 +1228,7 @@ module.exports.lua_tojsstring = lua_tojsstring; module.exports.lua_toljsstring = lua_toljsstring; module.exports.lua_tolstring = lua_tolstring; module.exports.lua_tonumber = lua_tonumber; +module.exports.lua_tonumberx = lua_tonumberx; module.exports.lua_topointer = lua_topointer; module.exports.lua_toproxy = lua_toproxy; module.exports.lua_tostring = lua_tostring; diff --git a/src/lauxlib.js b/src/lauxlib.js index 0672c14..3851ee7 100644 --- a/src/lauxlib.js +++ b/src/lauxlib.js @@ -333,7 +333,7 @@ const interror = function(L, arg) { }; const luaL_checknumber = function(L, arg) { - let d = lua.lua_tonumber(L, arg); + let d = lua.lua_tonumberx(L, arg); if (d === false) tag_error(L, arg, lua.LUA_TNUMBER); return d; @@ -200,6 +200,7 @@ module.exports.lua_tojsstring = lapi.lua_tojsstring; module.exports.lua_toljsstring = lapi.lua_toljsstring; module.exports.lua_tolstring = lapi.lua_tolstring; module.exports.lua_tonumber = lapi.lua_tonumber; +module.exports.lua_tonumberx = lapi.lua_tonumberx; module.exports.lua_topointer = lapi.lua_topointer; module.exports.lua_toproxy = lapi.lua_toproxy; module.exports.lua_tostring = lapi.lua_tostring; |