summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenoit Giannangeli <giann008@gmail.com>2017-05-28 11:54:09 +0200
committerBenoit Giannangeli <giann008@gmail.com>2017-05-28 11:54:09 +0200
commit03fa39649de945d5a392f460fd592f815534f69a (patch)
treee574b099dd5058be94fc9a3f5ab0f8bf878ea853
parent8173e639527cffc583c9c6ad6e7fc0d43429ab50 (diff)
downloadfengari-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.js5
-rw-r--r--src/lauxlib.js2
-rw-r--r--src/lua.js1
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;
diff --git a/src/lua.js b/src/lua.js
index c921982..07edaf1 100644
--- a/src/lua.js
+++ b/src/lua.js
@@ -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;