From e255d1d37667f21612f9fcf0c14a23b2bb2f0e9b Mon Sep 17 00:00:00 2001 From: jackpoz Date: Wed, 25 Dec 2013 22:52:35 +0100 Subject: Core/Transports: Fix possible crash Fix a crash happening when deleting an instance with transports. This case doesn't appear in current sources but could have happened in ICC and HoR. --- src/server/game/Maps/Map.cpp | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) (limited to 'src/server') diff --git a/src/server/game/Maps/Map.cpp b/src/server/game/Maps/Map.cpp index b57b50dd422..5b22940670f 100644 --- a/src/server/game/Maps/Map.cpp +++ b/src/server/game/Maps/Map.cpp @@ -63,15 +63,6 @@ Map::~Map() obj->ResetMap(); } - for (TransportsContainer::iterator itr = _transports.begin(); itr != _transports.end();) - { - Transport* transport = *itr; - ++itr; - - transport->RemoveFromWorld(); - delete transport; - } - if (!m_scriptSchedule.empty()) sScriptMgr->DecreaseScheduledScriptCount(m_scriptSchedule.size()); @@ -1357,6 +1348,17 @@ void Map::UnloadAll() ++i; UnloadGrid(grid, true); // deletes the grid and removes it from the GridRefManager } + + for (TransportsContainer::iterator itr = _transports.begin(); itr != _transports.end();) + { + Transport* transport = *itr; + ++itr; + + transport->RemoveFromWorld(); + delete transport; + } + + _transports.clear(); } // ***************************** -- cgit v1.2.3