From 6d8e2d2483715f05216be86a32f664bcbaac3efe Mon Sep 17 00:00:00 2001 From: sfan5 Date: Tue, 3 Mar 2020 21:14:47 +0100 Subject: [PATCH] Fix core.get_player_by_name() returning unusable ObjectRef Followup to the previous commit. --- src/script/lua_api/l_env.cpp | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/src/script/lua_api/l_env.cpp b/src/script/lua_api/l_env.cpp index 6e67e547b..a175569d8 100644 --- a/src/script/lua_api/l_env.cpp +++ b/src/script/lua_api/l_env.cpp @@ -667,15 +667,11 @@ int ModApiEnvMod::l_get_player_by_name(lua_State *L) // Do it const char *name = luaL_checkstring(L, 1); RemotePlayer *player = env->getPlayer(name); - if (player == NULL){ - lua_pushnil(L); - return 1; - } + if (!player || player->getPeerId() == PEER_ID_INEXISTENT) + return 0; PlayerSAO *sao = player->getPlayerSAO(); - if(sao == NULL){ - lua_pushnil(L); - return 1; - } + if (!sao || sao->isGone()) + return 0; // Put player on stack getScriptApiBase(L)->objectrefGetOrCreate(L, sao); return 1;