diff --git a/src/core/org/luaj/vm/LuaState.java b/src/core/org/luaj/vm/LuaState.java index 49a48ef3..c698a544 100644 --- a/src/core/org/luaj/vm/LuaState.java +++ b/src/core/org/luaj/vm/LuaState.java @@ -843,7 +843,7 @@ public class LuaState extends Lua { case LuaState.OP_CLOSURE: { b = LuaState.GETARG_Bx(i); proto = cl.p.p[b]; - newClosure = new LClosure(proto, _G); + newClosure = new LClosure(proto, cl.env); for (int j = 0; j < newClosure.upVals.length; j++, ci.pc++) { i = code[ci.pc]; o = LuaState.GET_OPCODE(i); diff --git a/src/test/res/req/subsample.lua b/src/test/res/req/subsample.lua index 111fc695..a53ed885 100644 --- a/src/test/res/req/subsample.lua +++ b/src/test/res/req/subsample.lua @@ -1,8 +1,16 @@ -- helper file for require() tests +require 'ids' +print( 'in subsample (before module statement)' ) +print( 'env', id(getfenv()), '_G', id(_G), '_NAME', _NAME, '_M', id(_M), '_PACKAGE', _PACKAGE ) module( 'req.subsample', package.seeall ) + +print( 'in subsample (after module statement)' ) +print( 'env', id(getfenv()), '_G', id(_G), '_NAME', _NAME, '_M', id(_M), '_PACKAGE', _PACKAGE ) function h() print 'in subsample.h' + print( 'env', id(getfenv()), '_G', id(_G), '_NAME', _NAME, '_M', id(_M), '_PACKAGE', _PACKAGE ) end print 'loading subsample.lua' +h() return 'return value from subsample', 'second return value from subsample'