From 8952a6a9c7dd4e5b41be135cf87882f161254d7d Mon Sep 17 00:00:00 2001 From: treeston Date: Thu, 22 Sep 2016 02:57:07 +0200 Subject: [PATCH] Movement/SplineChain: Fix a potential critical bug where resume info returned during an edge case could fail an assertion when used. --- .../MovementGenerators/SplineChainMovementGenerator.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) 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); }