aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorccrs <ccrs@users.noreply.github.com>2018-04-20 12:46:24 +0200
committerShauren <shauren.trinity@gmail.com>2021-09-26 01:43:24 +0200
commitd376058dcc1de9019dc49b1bf817c9259e23cd6d (patch)
treefbf0732f287dd1760e130c3ad3a5c584993cc0d7 /src
parent068b340b6988c3edd8db2b9d62a99baebe1b031e (diff)
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)
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Movement/MotionMaster.cpp8
1 files changed, 6 insertions, 2 deletions
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