aboutsummaryrefslogtreecommitdiff
path: root/src/game/MovementHandler.cpp
diff options
context:
space:
mode:
authormegamage <none@none>2009-08-13 10:01:00 -0500
committermegamage <none@none>2009-08-13 10:01:00 -0500
commit284b0063a8b5e49ade31900c92219fe62c13c572 (patch)
treea27d19f2c5a1cbe18d264edb4a1ab93994ba9933 /src/game/MovementHandler.cpp
parent5ab3117c0cebd1d1a457e1ae4656ba7c9cbaeec7 (diff)
*A hacky fix of the crash happening when player is teleported during logout.
--HG-- branch : trunk
Diffstat (limited to 'src/game/MovementHandler.cpp')
-rw-r--r--src/game/MovementHandler.cpp7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/game/MovementHandler.cpp b/src/game/MovementHandler.cpp
index 0b96560f150..72fe205625d 100644
--- a/src/game/MovementHandler.cpp
+++ b/src/game/MovementHandler.cpp
@@ -67,6 +67,13 @@ void WorldSession::HandleMoveWorldportAckOpcode()
GetPlayer()->SetSemaphoreTeleportFar(false);
Map * oldMap = GetPlayer()->GetMap();
+ assert(oldMap);
+ if(GetPlayer()->IsInWorld())
+ {
+ sLog.outCrash("Player is still in world when teleported out of map %u! to new map %u", oldMap->GetId(), loc.mapid);
+ oldMap->Remove(GetPlayer(), false);
+ }
+
// relocate the player to the teleport destination
Map * newMap = MapManager::Instance().CreateMap(loc.mapid, GetPlayer(), 0);
// the CanEnter checks are done in TeleporTo but conditions may change