Fix entity related bugs

* Make minetest.add_entity() binary-safe
* Fix on_death pushing dummy ObjectRef instead of nil
master
sfan5 2022-06-14 12:39:01 +02:00
parent 992f501159
commit e9e721b937
2 changed files with 6 additions and 3 deletions

View File

@ -244,7 +244,7 @@ bool ScriptApiEntity::luaentity_Punch(u16 id,
{
SCRIPTAPI_PRECHECKHEADER
//infostream<<"scriptapi_luaentity_step: id="<<id<<std::endl;
assert(puncher);
int error_handler = PUSH_ERROR_HANDLER(L);
@ -294,7 +294,10 @@ bool ScriptApiEntity::luaentity_run_simple_callback(u16 id,
}
luaL_checktype(L, -1, LUA_TFUNCTION);
lua_pushvalue(L, object); // self
objectrefGetOrCreate(L, sao); // killer reference
if (sao)
objectrefGetOrCreate(L, sao); // sao reference
else
lua_pushnil(L);
setOriginFromTable(object);
PCALL_RES(lua_pcall(L, 2, 1, error_handler));

View File

@ -640,7 +640,7 @@ int ModApiEnvMod::l_add_entity(lua_State *L)
v3f pos = checkFloatPos(L, 1);
const char *name = luaL_checkstring(L, 2);
const char *staticdata = luaL_optstring(L, 3, "");
std::string staticdata = readParam<std::string>(L, 3, "");
ServerActiveObject *obj = new LuaEntitySAO(env, pos, name, staticdata);
int objectid = env->addActiveObject(obj);