aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorElron103 <scarymovie87@gmx.de>2012-03-11 15:45:21 +0100
committerElron103 <scarymovie87@gmx.de>2012-03-11 15:45:21 +0100
commite36027e90b03164c06337a5eb52bcf3f46cf5341 (patch)
tree7b1aebeb11c0bffae3c5bf8c2a37ce085a43d739 /src
parentdc55d9ed13f203941382c24c935b275b096e2ee1 (diff)
Core/Misc: Add a validity check for coordinates, prevents crashes
Diffstat (limited to 'src')
-rwxr-xr-xsrc/server/game/Entities/Object/Object.cpp8
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 c1ecc3b74e7..a86a007c76a 100755
--- a/src/server/game/Entities/Object/Object.cpp
+++ b/src/server/game/Entities/Object/Object.cpp
@@ -2674,6 +2674,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;