From 6b381f2d0e6e857beba24d903d47f545f7bb14f5 Mon Sep 17 00:00:00 2001 From: VladimirMangos Date: Sat, 7 Feb 2009 23:37:09 +0300 Subject: [PATCH] [7247] Fixed memory and data lost at dalayed expire/clear of movement generators. --- src/game/MotionMaster.cpp | 8 ++++++-- src/shared/revision_nr.h | 2 +- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/game/MotionMaster.cpp b/src/game/MotionMaster.cpp index 91aa83e69..b2f99f968 100644 --- a/src/game/MotionMaster.cpp +++ b/src/game/MotionMaster.cpp @@ -136,7 +136,9 @@ MotionMaster::DelayedClean() if (empty() || size() == 1) return; - m_expList = new ExpireList(); + if(!m_expList) + m_expList = new ExpireList(); + while( !empty() && size() > 1 ) { MovementGenerator *curr = top(); @@ -184,10 +186,12 @@ MotionMaster::DelayedExpire() curr->Finalize(*i_owner); pop(); + if(!m_expList) + m_expList = new ExpireList(); + if( !isStatic(curr) ) m_expList->push_back(curr); - m_expList = new ExpireList(); while( !empty() && top()->GetMovementGeneratorType() == TARGETED_MOTION_TYPE ) { // Should check if target is still valid? If not valid it will crash. diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index 396bf0282..7f988ece3 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 "7246" + #define REVISION_NR "7247" #endif // __REVISION_NR_H__