From eac259f75f7d122d3d124093513eb43967669696 Mon Sep 17 00:00:00 2001 From: Machiavelli Date: Tue, 4 Jan 2011 23:43:20 +0100 Subject: Core/Units: Call Unit::InterruptNonMeleeSpells before RemoveFromWorld to make GetCaster() return a valid pointer on AuraEffect unapply methods. Fixes a crash in VisitorHelper related to Mind Vision. closes #43 --- src/server/game/Entities/Unit/Unit.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'src/server') diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index b35ba61eb2f..f9bebe13ac1 100755 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -13301,6 +13301,9 @@ void Unit::RemoveFromWorld() void Unit::CleanupsBeforeDelete(bool finalCleanup) { + // This needs to be before RemoveFromWorld to make GetCaster() return a valid pointer on aura removal + InterruptNonMeleeSpells(true); + if (IsInWorld()) RemoveFromWorld(); @@ -13313,7 +13316,6 @@ void Unit::CleanupsBeforeDelete(bool finalCleanup) if (finalCleanup) m_cleanupDone = true; - InterruptNonMeleeSpells(true); m_Events.KillAllEvents(false); // non-delatable (currently casted spells) will not deleted now but it will deleted at call in Map::RemoveAllObjectsInRemoveList CombatStop(); ClearComboPointHolders(); -- cgit v1.2.3