diff options
author | jackpoz <giacomopoz@gmail.com> | 2013-12-25 22:52:35 +0100 |
---|---|---|
committer | jackpoz <giacomopoz@gmail.com> | 2013-12-25 23:11:22 +0100 |
commit | e255d1d37667f21612f9fcf0c14a23b2bb2f0e9b (patch) | |
tree | 9a7d8d2769d52d7282963b768c362fd52a8008b6 /src | |
parent | 9b88a789e6cb12990d0b7b04e42fe876dc6dba9f (diff) |
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.
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Maps/Map.cpp | 20 |
1 files changed, 11 insertions, 9 deletions
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(); } // ***************************** |