aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorjackpoz <giacomopoz@gmail.com>2013-12-25 22:52:35 +0100
committerjackpoz <giacomopoz@gmail.com>2013-12-25 23:11:22 +0100
commite255d1d37667f21612f9fcf0c14a23b2bb2f0e9b (patch)
tree9a7d8d2769d52d7282963b768c362fd52a8008b6 /src
parent9b88a789e6cb12990d0b7b04e42fe876dc6dba9f (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.cpp20
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();
}
// *****************************