diff --git a/src/game/MotionMaster.cpp b/src/game/MotionMaster.cpp index 8310000c2..aa4e93133 100644 --- a/src/game/MotionMaster.cpp +++ b/src/game/MotionMaster.cpp @@ -59,8 +59,14 @@ void MotionMaster::Initialize() MotionMaster::~MotionMaster() { - // clear ALL movement generators (including default) - DirectClean(false,true); + // just deallocate movement generator, but do not Finalize since it may access to already deallocated owner's memory + while(!empty()) + { + MovementGenerator * m = top(); + pop(); + if (!isStatic(m)) + delete m; + } } void MotionMaster::UpdateMotion(uint32 diff) diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index d190ae3e8..dc467959c 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -9343,7 +9343,6 @@ void Unit::CleanupsBeforeDelete() else getHostileRefManager().deleteReferences(); RemoveAllAuras(AURA_REMOVE_BY_DELETE); - GetMotionMaster()->Clear(false,true); // remove all movement generators. } WorldObject::CleanupsBeforeDelete(); } diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index 095fa69f3..a92be22bf 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 "11776" + #define REVISION_NR "11777" #endif // __REVISION_NR_H__