diff options
author | Treeston <treeston.mmoc@gmail.com> | 2018-04-07 17:23:26 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2021-09-24 23:43:30 +0200 |
commit | 3d9d6fbcb80eaab72acbe6ef09b9b1c29f2439c7 (patch) | |
tree | 7a982b48fe2b05e06b72569234c3716434536430 /src | |
parent | d76db70cbf036cae1067552d6d6bcc6d044c38c4 (diff) |
Core/Movement: Fix a potential crash on newly created pets. Closes #21791.
(cherry picked from commit 74defba5a7e3e0619ca05808936ebd74741e1472)
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Entities/Unit/Unit.cpp | 2 | ||||
-rw-r--r-- | src/server/game/Movement/MotionMaster.h | 1 | ||||
-rw-r--r-- | src/server/game/Movement/MovementGenerators/ChaseMovementGenerator.cpp | 2 |
3 files changed, 3 insertions, 2 deletions
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 390d9855ce1..f5a4e806dca 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -8064,7 +8064,7 @@ void Unit::UpdateSpeed(UnitMoveType mtype) if (creature->HasUnitTypeMask(UNIT_MASK_MINION) && !creature->IsInCombat()) { - MovementGenerator* top = creature->GetMotionMaster()->top(); + MovementGenerator* top = creature->GetMotionMaster()->topOrNull(); if (top && top->GetMovementGeneratorType() == FOLLOW_MOTION_TYPE) { Unit* followed = ASSERT_NOTNULL(dynamic_cast<AbstractFollower*>(top))->GetTarget(); diff --git a/src/server/game/Movement/MotionMaster.h b/src/server/game/Movement/MotionMaster.h index f03f553e288..c3cf37424cb 100644 --- a/src/server/game/Movement/MotionMaster.h +++ b/src/server/game/Movement/MotionMaster.h @@ -144,6 +144,7 @@ class TC_GAME_API MotionMaster bool empty() const { return (_top < 0); } int size() const { return _top + 1; } + MovementGenerator* topOrNull() const { return empty() ? nullptr : top(); } MovementGenerator* top() const { ASSERT(!empty()); return _slot[_top]; } void Initialize(); diff --git a/src/server/game/Movement/MovementGenerators/ChaseMovementGenerator.cpp b/src/server/game/Movement/MovementGenerators/ChaseMovementGenerator.cpp index a84139cca2d..230edbdc861 100644 --- a/src/server/game/Movement/MovementGenerators/ChaseMovementGenerator.cpp +++ b/src/server/game/Movement/MovementGenerators/ChaseMovementGenerator.cpp @@ -26,7 +26,7 @@ static bool IsMutualChase(Unit* owner, Unit* target) { - MovementGenerator const* gen = target->GetMotionMaster()->top(); + MovementGenerator const* gen = target->GetMotionMaster()->topOrNull(); if (!gen || gen->GetMovementGeneratorType() != CHASE_MOTION_TYPE) return false; return (static_cast<ChaseMovementGenerator const*>(gen)->GetTarget() == owner); |