From c92d50d6ec26f34a994ca80dc06e42cbd0eb9364 Mon Sep 17 00:00:00 2001 From: Anton Popovichenko Date: Wed, 12 Feb 2025 22:23:57 +0100 Subject: [PATCH] fix(Core/Guild): Fix use of guild members' data after deletion. (#21421) --- src/server/game/Guilds/Guild.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/server/game/Guilds/Guild.cpp b/src/server/game/Guilds/Guild.cpp index 16473a2ac..f4440c5b5 100644 --- a/src/server/game/Guilds/Guild.cpp +++ b/src/server/game/Guilds/Guild.cpp @@ -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); else { + // Copy values since everything will be deleted in DeleteMember(). ObjectGuid guid = member->GetGUID(); + std::string memberName = member->GetName(); + // After call to DeleteMember pointer to member becomes invalid DeleteMember(guid, false, true); _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()); } } }