Fix core.get_connected_players() returning unusable ObjectRefs
This bug is only exposed by 91eef646a5
independent of the move of get_connected_players from Lua to C++.
Previously, there would be a small time window where the SAO had
its peer ID set to PEER_ID_INEXISTENT but the RemotePlayer was
still linked to the SAO, resulting in an ObjectRef that crashed
on certain function calls (#9387).
master
parent
7dffd08c1a
commit
1761d7d0f8
|
@ -651,7 +651,7 @@ int ModApiEnvMod::l_get_connected_players(lua_State *L)
|
|||
if (player->getPeerId() == PEER_ID_INEXISTENT)
|
||||
continue;
|
||||
PlayerSAO *sao = player->getPlayerSAO();
|
||||
if (sao) {
|
||||
if (sao && !sao->isGone()) {
|
||||
getScriptApiBase(L)->objectrefGetOrCreate(L, sao);
|
||||
lua_rawseti(L, -2, ++i);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue