diff options
author | Shocker <shocker@freakz.ro> | 2012-04-10 17:15:24 -0700 |
---|---|---|
committer | Shocker <shocker@freakz.ro> | 2012-04-10 17:15:24 -0700 |
commit | b4341413e5a82b525e3cf84536caffb12d38b32b (patch) | |
tree | bc21801ac66dd9a169e61d40a9ccd1b0a1c735ad /src | |
parent | a470a5ad93420255338502f48339d13a0aa7bcb0 (diff) | |
parent | e36027e90b03164c06337a5eb52bcf3f46cf5341 (diff) |
Merge pull request #5648 from Elron103/pull-requests
Core/Misc: Add a validity check for coordinates, prevents possible crashes with invalid coordinates
Diffstat (limited to 'src')
-rwxr-xr-x | src/server/game/Entities/Object/Object.cpp | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp index 8f74e50b1e9..70b680c6ae0 100755 --- a/src/server/game/Entities/Object/Object.cpp +++ b/src/server/game/Entities/Object/Object.cpp @@ -2741,6 +2741,14 @@ void WorldObject::MovePositionToFirstCollision(Position &pos, float dist, float pos.m_positionZ += 2.0f; destx = pos.m_positionX + dist * cos(angle); desty = pos.m_positionY + dist * sin(angle); + + // Prevent invalid coordinates here, position is unchanged + if (!Trinity::IsValidMapCoord(destx, desty)) + { + sLog->outCrash("WorldObject::MovePositionToFirstCollision invalid coordinates X: %f and Y: %f were passed!", destx, desty); + return; + } + ground = GetMap()->GetHeight(GetPhaseMask(), destx, desty, MAX_HEIGHT, true); floor = GetMap()->GetHeight(GetPhaseMask(), destx, desty, pos.m_positionZ, true); destz = fabs(ground - pos.m_positionZ) <= fabs(floor - pos.m_positionZ) ? ground : floor; |