aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortreeston <treeston.mmoc@gmail.com>2016-09-22 02:57:07 +0200
committertreeston <treeston.mmoc@gmail.com>2016-09-22 02:57:07 +0200
commit55ac0186cc7b716a150f17daf755244cc58a6241 (patch)
tree26fe54cfdfc8de18732d66852305ff48baacb35a
parent068ade35b648b021cce84011bc5016fa9051daab (diff)
Movement/SplineChain: Fix a potential critical bug where resume info returned during an edge case could fail an assertion when used.
-rw-r--r--src/server/game/Movement/MovementGenerators/SplineChainMovementGenerator.cpp7
1 files changed, 6 insertions, 1 deletions
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);
}