From 0dafc681edf654689d353c60783c984775524c3b Mon Sep 17 00:00:00 2001 From: mpfans Date: Sat, 25 Jul 2026 05:02:29 +0800 Subject: [PATCH] fix(Core/Spells): guard m_caster access during Spell destruction chain (#26782) --- src/server/game/Spells/Spell.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index a328e3244..d155bc6c0 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -4475,7 +4475,9 @@ void Spell::finish(bool ok) return; m_spellState = SPELL_STATE_FINISHED; - if (Player* modOwner = m_caster->GetSpellModOwner()) + // FindMap() check: pending spell events are destroyed after the caster has left the map, + // where resolving a unit-summoned caster's owner through ObjectAccessor would assert + if (Player* modOwner = (m_caster && m_caster->FindMap()) ? m_caster->GetSpellModOwner() : nullptr) modOwner->SetSpellModTakingSpell(this, false); if (m_spellInfo->IsChanneled())