Skip to content

Commit

Permalink
Merge pull request #79332 from AThousandShips/mp_crash
Browse files Browse the repository at this point in the history
Prevent crash when accessing `Node` Multiplayer from thread
  • Loading branch information
YuriSizov committed Aug 1, 2023
2 parents 266e195 + 7bd3a3a commit fd1ee5d
Showing 1 changed file with 8 additions and 2 deletions.
10 changes: 8 additions & 2 deletions scene/main/node.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -645,7 +645,8 @@ int Node::get_multiplayer_authority() const {
bool Node::is_multiplayer_authority() const {
ERR_FAIL_COND_V(!is_inside_tree(), false);

return get_multiplayer()->get_unique_id() == data.multiplayer_authority;
Ref<MultiplayerAPI> api = get_multiplayer();
return api.is_valid() && (api->get_unique_id() == data.multiplayer_authority);
}

/***** RPC CONFIG ********/
Expand Down Expand Up @@ -724,7 +725,12 @@ Error Node::_rpc_id_bind(const Variant **p_args, int p_argcount, Callable::CallE

Error Node::rpcp(int p_peer_id, const StringName &p_method, const Variant **p_arg, int p_argcount) {
ERR_FAIL_COND_V(!is_inside_tree(), ERR_UNCONFIGURED);
return get_multiplayer()->rpcp(this, p_peer_id, p_method, p_arg, p_argcount);

Ref<MultiplayerAPI> api = get_multiplayer();
if (api.is_null()) {
return ERR_UNCONFIGURED;
}
return api->rpcp(this, p_peer_id, p_method, p_arg, p_argcount);
}

Ref<MultiplayerAPI> Node::get_multiplayer() const {
Expand Down

0 comments on commit fd1ee5d

Please sign in to comment.