fix: crashlog player::RestoreSpellMods
This commit is contained in:
@@ -15971,6 +15971,13 @@ void Unit::CleanupBeforeRemoveFromMap(bool finalCleanup)
|
|||||||
if (IsInWorld()) // not in world and not being removed atm
|
if (IsInWorld()) // not in world and not being removed atm
|
||||||
RemoveFromWorld();
|
RemoveFromWorld();
|
||||||
|
|
||||||
|
// added for mod_playerbots crash fixes; m_Events.KillAllEvents(false) placed after RemoveFromWorld and
|
||||||
|
// interupt and before RemoveAllAuras.
|
||||||
|
// Cancel and remove pending events (including SpellEvent) before aura/spellmod cleanup.
|
||||||
|
// Without this, SpellEvent may be cancelled later during EventProcessor destruction after auras/spellmods are gone,
|
||||||
|
// leading to invalid access in Player::RestoreSpellMods on logout.
|
||||||
|
m_Events.KillAllEvents(false);
|
||||||
|
|
||||||
ASSERT(GetGUID());
|
ASSERT(GetGUID());
|
||||||
|
|
||||||
// A unit may be in removelist and not in world, but it is still in grid
|
// A unit may be in removelist and not in world, but it is still in grid
|
||||||
|
|||||||
Reference in New Issue
Block a user