Fix require return value

This commit is contained in:
James Roseborough
2008-05-24 00:45:57 +00:00
parent 02f8452515
commit b8d0191dc9

View File

@@ -315,12 +315,12 @@ public class PackageLib extends LFunction {
vm.call( 1, 1 ); /* run loaded module */ vm.call( 1, 1 ); /* run loaded module */
if ( ! vm.isnil(-1) ) /* non-nil return? */ if ( ! vm.isnil(-1) ) /* non-nil return? */
LOADED.luaSetTable(vm, LOADED, name, vm.topointer(-1) ); /* _LOADED[name] = returned value */ LOADED.luaSetTable(vm, LOADED, name, vm.topointer(-1) ); /* _LOADED[name] = returned value */
if ( LOADED.luaGetTable(vm, LOADED, name) == _SENTINEL ) { /* module did not set a value? */ LValue result = LOADED.luaGetTable(vm, LOADED, name);
LOADED.luaSetTable(vm, LOADED, name, LBoolean.TRUE ); /* _LOADED[name] = true */ if ( result == _SENTINEL ) { /* module did not set a value? */
vm.pushboolean(true); LOADED.luaSetTable(vm, LOADED, name, result=LBoolean.TRUE ); /* _LOADED[name] = true */
} }
vm.replace(1); vm.resettop();
vm.settop(1); vm.pushlvalue(result);
} }
public static void loadlib( LuaState vm ) { public static void loadlib( LuaState vm ) {