From 5131a5ab1f471655d6398748b1eaa9abd47c14da Mon Sep 17 00:00:00 2001 From: Benoit Giannangeli Date: Fri, 17 Feb 2017 14:36:33 +0100 Subject: lua_pcall --- src/ldo.js | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) (limited to 'src/ldo.js') diff --git a/src/ldo.js b/src/ldo.js index 632bc22..458ae46 100644 --- a/src/ldo.js +++ b/src/ldo.js @@ -19,6 +19,23 @@ const TMS = ltm.TMS; const nil = new TValue(CT.LUA_TNIL, null); +const seterrorobj = function(L, errcode, oldtop) { + switch (errcode) { + case TS.LUA_ERRMEM: { + L.stack[oldtop] = new TValue(CT.LUA_TLNGSTR, "not enough memory"); + break; + } + case TS.LUA_ERRERR: { + L.stack[oldtop] = new TValue(CT.LUA_TLNGSTR, "error in error handling"); + } + default: { + L.stack[oldtop] = L.stack[L.top - 1]; + } + } + + L.top = oldtop + 1; +}; + /* ** Prepares a function call: checks the stack, creates a new CallInfo ** entry, fills in the relevant information, calls hook if needed. @@ -221,7 +238,6 @@ const luaD_rawrunprotected = function(L, f, ud) { try { f(L, ud); } catch (e) { - console.log(e); if (lj.status == 0) lj.status = -1; } @@ -243,7 +259,7 @@ const luaD_pcall = function(L, func, u, old_top, ef) { if (status !== TS.LUA_OK) { lfunc.luaF_close(L, old_top); - // TODO: seterrorobj(L, status, oldtop); + seterrorobj(L, status, old_top); L.ci = old_ci; // TODO: L->allowhook = old_allowhooks; L.nny = old_nny; -- cgit v1.2.3-54-g00ecf