From 55ac0186cc7b716a150f17daf755244cc58a6241 Mon Sep 17 00:00:00 2001 From: treeston Date: Thu, 22 Sep 2016 02:57:07 +0200 Subject: Movement/SplineChain: Fix a potential critical bug where resume info returned during an edge case could fail an assertion when used. --- .../Movement/MovementGenerators/SplineChainMovementGenerator.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/server/game/Movement/MovementGenerators/SplineChainMovementGenerator.cpp b/src/server/game/Movement/MovementGenerators/SplineChainMovementGenerator.cpp index 43b4c6b029e..5cc96add7a6 100644 --- a/src/server/game/Movement/MovementGenerators/SplineChainMovementGenerator.cpp +++ b/src/server/game/Movement/MovementGenerators/SplineChainMovementGenerator.cpp @@ -135,7 +135,12 @@ SplineChainResumeInfo SplineChainMovementGenerator::GetResumeInfo(Unit const* me if (!_nextIndex) return SplineChainResumeInfo(_id, &_chain, _walk, 0, 0, _msToNext); if (me->movespline->Finalized()) - return SplineChainResumeInfo(_id, &_chain, _walk, _nextIndex, 0, 1u); + { + if (_nextIndex < _chainSize) + return SplineChainResumeInfo(_id, &_chain, _walk, _nextIndex, 0, 1u); + else + return SplineChainResumeInfo(); + } return SplineChainResumeInfo(_id, &_chain, _walk, uint8(_nextIndex - 1), uint8(me->movespline->_currentSplineIdx()), _msToNext); } -- cgit v1.2.3