fix(Core/Guild): Fix use of guild members' data after deletion. (#21421)
This commit is contained in:
committed by
GitHub
parent
fe2627bc91
commit
c92d50d6ec
@@ -1556,11 +1556,14 @@ void Guild::HandleRemoveMember(WorldSession* session, std::string_view name)
|
|||||||
SendCommandResult(session, GUILD_COMMAND_REMOVE, ERR_GUILD_RANK_TOO_HIGH_S, name);
|
SendCommandResult(session, GUILD_COMMAND_REMOVE, ERR_GUILD_RANK_TOO_HIGH_S, name);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
// Copy values since everything will be deleted in DeleteMember().
|
||||||
ObjectGuid guid = member->GetGUID();
|
ObjectGuid guid = member->GetGUID();
|
||||||
|
std::string memberName = member->GetName();
|
||||||
|
|
||||||
// After call to DeleteMember pointer to member becomes invalid
|
// After call to DeleteMember pointer to member becomes invalid
|
||||||
DeleteMember(guid, false, true);
|
DeleteMember(guid, false, true);
|
||||||
_LogEvent(GUILD_EVENT_LOG_UNINVITE_PLAYER, player->GetGUID(), guid);
|
_LogEvent(GUILD_EVENT_LOG_UNINVITE_PLAYER, player->GetGUID(), guid);
|
||||||
_BroadcastEvent(GE_REMOVED, ObjectGuid::Empty, member->GetName(), player->GetName());
|
_BroadcastEvent(GE_REMOVED, ObjectGuid::Empty, memberName, player->GetName());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user