From d376058dcc1de9019dc49b1bf817c9259e23cd6d Mon Sep 17 00:00:00 2001 From: ccrs Date: Fri, 20 Apr 2018 12:46:24 +0200 Subject: Core/Movement: crashfix New movement -> Mutate -> Finish current for that slot that happens to be the same type, Follow -> Finish method on the removed movement -> UpdateSpeed call -> search for top -> crash Closes #21861 (cherry picked from commit bcab5bc4e7ac3866e86a54a1aa17e1174672ce75) --- src/server/game/Movement/MotionMaster.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/server/game/Movement/MotionMaster.cpp b/src/server/game/Movement/MotionMaster.cpp index 23cc2d97d7b..890d4d91bbe 100644 --- a/src/server/game/Movement/MotionMaster.cpp +++ b/src/server/game/Movement/MotionMaster.cpp @@ -161,9 +161,13 @@ void MotionMaster::MovementExpired(bool reset /*= true*/) MovementGeneratorType MotionMaster::GetCurrentMovementGeneratorType() const { if (empty()) - return IDLE_MOTION_TYPE; + return MAX_MOTION_TYPE; + + MovementGenerator* movement = top(); + if (!movement) + return MAX_MOTION_TYPE; - return top()->GetMovementGeneratorType(); + return movement->GetMovementGeneratorType(); } MovementGeneratorType MotionMaster::GetMotionSlotType(MovementSlot slot) const -- cgit v1.2.3