From 23f589efa3caf01de0ad04d092e782ef5f349ee6 Mon Sep 17 00:00:00 2001 From: QAston Date: Sat, 30 Jan 2010 11:37:39 +0100 Subject: *Fix a crash in CORPSE_MAP_POSITION_RESPONSE handler. --HG-- branch : trunk --- src/game/QueryHandler.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'src/game/QueryHandler.cpp') diff --git a/src/game/QueryHandler.cpp b/src/game/QueryHandler.cpp index 5375e938f56..010fda345bc 100644 --- a/src/game/QueryHandler.cpp +++ b/src/game/QueryHandler.cpp @@ -471,17 +471,17 @@ void WorldSession::HandleCorpseMapPositionQuery( WorldPacket & recv_data ) WorldPacket data(CMSG_CORPSE_MAP_POSITION_QUERY_RESPONSE, 4+4+4+4); - Map* map = corpse->GetMap(); - float cx, cy, cz; - if (map->IsDungeon()) + int32 mapId = corpse->GetMapId(); + MapEntry const * corpseMapEntry = sMapStore.LookupEntry(mapId); + if (corpseMapEntry->IsDungeon()) { - int32 mapId; float mx, my; - map->GetEntrancePos(mapId, mx, my); + bool entranceFound = corpseMapEntry->GetEntrancePos(mapId, mx, my); + assert(entranceFound); - const Map* newMap = MapManager::Instance().CreateBaseMap(mapId); + Map const * newMap = MapManager::Instance().CreateBaseMap(mapId); uint32 zoneId = newMap->GetZoneId(mx, my, 0); float _mx = mx; @@ -494,7 +494,7 @@ void WorldSession::HandleCorpseMapPositionQuery( WorldPacket & recv_data ) cx = x - mx; cy = y - my; - cz = corpse->GetPositionZ() - map->GetHeight(_mx, _my, MAX_HEIGHT); + cz = corpse->GetPositionZ() - newMap->GetHeight(_mx, _my, MAX_HEIGHT); } else { -- cgit v1.2.3