diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index 6ccb6f0ad..03e4dbefe 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -169,10 +169,12 @@ Unit::~Unit() } } - RemoveAllGameObjects(); - RemoveAllDynObjects(); + if (m_charmInfo) + delete m_charmInfo; - if(m_charmInfo) delete m_charmInfo; + // those should be already removed at "RemoveFromWorld()" call + assert(m_gameObj.size() == 0); + assert(m_dynObjGUIDs.size() == 0); } void Unit::Update( uint32 p_time ) @@ -11097,11 +11099,13 @@ void Unit::AddToWorld() void Unit::RemoveFromWorld() { // cleanup - if(IsInWorld()) + if (IsInWorld()) { Uncharm(); RemoveNotOwnSingleTargetAuras(); RemoveGuardians(); + RemoveAllGameObjects(); + RemoveAllDynObjects(); } Object::RemoveFromWorld(); @@ -11118,8 +11122,6 @@ void Unit::CleanupsBeforeDelete() DeleteThreatList(); getHostileRefManager().setOnlineOfflineState(false); RemoveAllAuras(AURA_REMOVE_BY_DELETE); - RemoveAllGameObjects(); - RemoveAllDynObjects(); GetMotionMaster()->Clear(false); // remove different non-standard movement generators. } WorldObject::CleanupsBeforeDelete(); diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index b38a79435..10cf6425b 100644 --- a/src/shared/revision_nr.h +++ b/src/shared/revision_nr.h @@ -1,4 +1,4 @@ #ifndef __REVISION_NR_H__ #define __REVISION_NR_H__ - #define REVISION_NR "8818" + #define REVISION_NR "8819" #endif // __REVISION_NR_H__