From 2b5ddea71dbdb144bf49c05a1df5dc7e11b868f2 Mon Sep 17 00:00:00 2001 From: Keleborn <22352763+Celandriel@users.noreply.github.com> Date: Mon, 7 Sep 2026 01:45:17 -0700 Subject: [PATCH] fix(Core/Unit): cancel pending events before aura cleanup on map removal (#27527) Co-authored-by: bashermens <31279994+hermensbas@users.noreply.github.com> Co-authored-by: sudlud --- src/server/game/Entities/Unit/Unit.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 6a7039a5d1..5c9f95a89b 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -12612,6 +12612,10 @@ void Unit::CleanupBeforeRemoveFromMap(bool finalCleanup) if (IsInWorld()) // not in world and not being removed atm RemoveFromWorld(); + // Abort pending events here: left to ~EventProcessor they run after m_spellMods is already + // destroyed, and cancelling a SpellEvent then hits freed memory in Player::RestoreSpellMods. + m_Events.KillAllEvents(false); + ASSERT(GetGUID()); // A unit may be in removelist and not in world, but it is still in grid