diff options
| -rw-r--r-- | src/lapi.js | 4 | ||||
| -rw-r--r-- | tests/lapi.js | 20 | 
2 files changed, 22 insertions, 2 deletions
| diff --git a/src/lapi.js b/src/lapi.js index 1be0837..be80672 100644 --- a/src/lapi.js +++ b/src/lapi.js @@ -912,9 +912,9 @@ const lua_arith = function(L, op) {  */  const lua_load = function(L, reader, data, chunkname, mode) { -    assert(defs.is_luastring(chunkname), "lua_load expect an array of byte as chunkname"); -    assert(mode ? defs.is_luastring(mode) : true, "lua_load expect an array of byte as mode");      if (!chunkname) chunkname = [defs.char["?"]]; +    else assert(defs.is_luastring(chunkname), "lua_load expect an array of byte as chunkname"); +    assert(mode ? defs.is_luastring(mode) : true, "lua_load expect an array of byte as mode");      let z = new lzio.ZIO(L, reader, data);      let status = ldo.luaD_protectedparser(L, z, chunkname, mode);      if (status === TS.LUA_OK) {  /* no errors? */ diff --git a/tests/lapi.js b/tests/lapi.js index 1dbdd5c..b764064 100644 --- a/tests/lapi.js +++ b/tests/lapi.js @@ -361,6 +361,26 @@ test('lua_pop', function (t) {  }); +test('lua_load with no chunkname', function (t) { +    let L; + +    t.plan(2); + +    t.doesNotThrow(function () { +        L = lauxlib.luaL_newstate(); + +        lua.lua_load(L, function(L, s) { let r = s.code; s.code = null; return r; }, {code: lua.to_luastring("return 'hello'")}, null, null); + +        lua.lua_call(L, 0, 1); +    }, "JS Lua program ran without error"); + +    t.strictEqual( +        lua.lua_tojsstring(L, -1), +        "hello", +        "Correct element(s) on the stack" +    ); +}); +  test('lua_load and lua_call it', function (t) {      let luaCode = `          local a = "JS > Lua > JS \o/" | 
