diff --git a/src/core/org/luaj/vm2/lib/PackageLib.java b/src/core/org/luaj/vm2/lib/PackageLib.java index d4eea5b2..17cfc566 100644 --- a/src/core/org/luaj/vm2/lib/PackageLib.java +++ b/src/core/org/luaj/vm2/lib/PackageLib.java @@ -161,7 +161,8 @@ public class PackageLib extends OneArgFunction { if ( ! value.istable() ) { /* not found? */ /* try global variable (and create one if it does not exist) */ - module = findtable( env, modname ); + LuaValue globals = LuaThread.getGlobals(); + module = findtable( globals, modname ); if ( module == null ) error( "name conflict for module '"+modname+"'" ); LOADED.set(modname, module); @@ -283,7 +284,7 @@ public class PackageLib extends OneArgFunction { LuaValue result = chunk.call(name); if ( ! result.isnil() ) LOADED.set( name, result ); - else if ( LOADED.get(name) == _SENTINEL ) + else if ( (result = LOADED.get(name)) == _SENTINEL ) LOADED.set( name, result = LuaValue.TRUE ); return result; } diff --git a/test/junit/org/luaj/vm2/vm1/luajvm1-tests.zip b/test/junit/org/luaj/vm2/vm1/luajvm1-tests.zip index e7d45590..2e28ab7e 100644 Binary files a/test/junit/org/luaj/vm2/vm1/luajvm1-tests.zip and b/test/junit/org/luaj/vm2/vm1/luajvm1-tests.zip differ