Parcourir la source

lua: do not discard return values blindly

Daniele Bartolini il y a 7 mois
Parent
commit
e9496659ce
2 fichiers modifiés avec 5 ajouts et 4 suppressions
  1. 4 3
      src/lua/lua_environment.cpp
  2. 1 1
      src/lua/lua_environment.h

+ 4 - 3
src/lua/lua_environment.cpp

@@ -301,19 +301,20 @@ void LuaEnvironment::do_file(const char *name)
 	CE_ASSERT(lua_gettop(L) == 0, "Stack not clean");
 }
 
-void LuaEnvironment::require(const char *name)
+LuaStack LuaEnvironment::require(const char *name, int nres)
 {
+	LuaStack stack(L);
 	int status;
 
 	lua_getglobal(L, "require");
 	lua_pushstring(L, name);
-	status = this->call(1, 0);
+	status = this->call(1, nres);
 	if (status != LUA_OK) {
 		report(L, status);
 		device()->pause();
 	}
 
-	CE_ASSERT(lua_gettop(L) == 0, "Stack not clean");
+	return stack;
 }
 
 LuaStack LuaEnvironment::execute(const LuaResource *lr, int nres)

+ 1 - 1
src/lua/lua_environment.h

@@ -68,7 +68,7 @@ struct LuaEnvironment
 	void do_file(const char *name);
 
 	/// Equivalent to calling `require "name"` from Lua.
-	void require(const char *name);
+	LuaStack require(const char *name, int nres = 0);
 
 	/// Executes the lua resource @a lr.
 	LuaStack execute(const LuaResource *lr, int nres);