[8819] remove objects if unit leaves map

prior this - the objects were only removed when
unit itself gots removed
this fix some crashes with Object::SetUint64

thx to juansalvador and vladimir :)
This commit is contained in:
balrok 2009-11-10 05:36:19 -05:00
parent 537562f29f
commit 35d64c8d62
2 changed files with 9 additions and 7 deletions

View file

@ -169,10 +169,12 @@ Unit::~Unit()
} }
} }
RemoveAllGameObjects(); if (m_charmInfo)
RemoveAllDynObjects(); 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 ) void Unit::Update( uint32 p_time )
@ -11102,6 +11104,8 @@ void Unit::RemoveFromWorld()
Uncharm(); Uncharm();
RemoveNotOwnSingleTargetAuras(); RemoveNotOwnSingleTargetAuras();
RemoveGuardians(); RemoveGuardians();
RemoveAllGameObjects();
RemoveAllDynObjects();
} }
Object::RemoveFromWorld(); Object::RemoveFromWorld();
@ -11118,8 +11122,6 @@ void Unit::CleanupsBeforeDelete()
DeleteThreatList(); DeleteThreatList();
getHostileRefManager().setOnlineOfflineState(false); getHostileRefManager().setOnlineOfflineState(false);
RemoveAllAuras(AURA_REMOVE_BY_DELETE); RemoveAllAuras(AURA_REMOVE_BY_DELETE);
RemoveAllGameObjects();
RemoveAllDynObjects();
GetMotionMaster()->Clear(false); // remove different non-standard movement generators. GetMotionMaster()->Clear(false); // remove different non-standard movement generators.
} }
WorldObject::CleanupsBeforeDelete(); WorldObject::CleanupsBeforeDelete();

View file

@ -1,4 +1,4 @@
#ifndef __REVISION_NR_H__ #ifndef __REVISION_NR_H__
#define __REVISION_NR_H__ #define __REVISION_NR_H__
#define REVISION_NR "8818" #define REVISION_NR "8819"
#endif // __REVISION_NR_H__ #endif // __REVISION_NR_H__