From f55a393fb84babe89446a7a899adb639f26cef7b Mon Sep 17 00:00:00 2001 From: James Roseborough Date: Thu, 17 Jan 2008 00:59:16 +0000 Subject: [PATCH] Fix environment propogation from function to function. --- src/core/org/luaj/vm/LuaState.java | 2 +- src/test/res/req/subsample.lua | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) 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'