diff options
author | Shauren <shauren.trinity@gmail.com> | 2015-09-30 00:31:21 +0200 |
---|---|---|
committer | jackpoz <giacomopoz@gmail.com> | 2015-09-30 19:58:09 +0200 |
commit | 325336137d7855e17feb02a56ea3fcd605ddfc33 (patch) | |
tree | 7cf6ce0a799fce34bf698cde6f558e7494abf75f /src | |
parent | d028f33ed9c18449b1d4c902c3837b4679374f1f (diff) |
Core/Transports: Fixed accessing deleted instance transports
Thanks @jackpoz for valgrind log and @pete318 for reproduction steps
Closes #15633
(cherry picked from commit 8745e08be020471db886e11a3a7512a751141562)
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Entities/Transport/Transport.cpp | 1 | ||||
-rw-r--r-- | src/server/game/Maps/Map.cpp | 7 |
2 files changed, 7 insertions, 1 deletions
diff --git a/src/server/game/Entities/Transport/Transport.cpp b/src/server/game/Entities/Transport/Transport.cpp index 236675a7d29..144805b88b5 100644 --- a/src/server/game/Entities/Transport/Transport.cpp +++ b/src/server/game/Entities/Transport/Transport.cpp @@ -100,7 +100,6 @@ bool Transport::Create(uint32 guidlow, uint32 entry, uint32 mapid, float x, floa void Transport::CleanupsBeforeDelete(bool finalCleanup /*= true*/) { - HashMapHolder<Transport>::Remove(this); UnloadStaticPassengers(); while (!_passengers.empty()) { diff --git a/src/server/game/Maps/Map.cpp b/src/server/game/Maps/Map.cpp index 7acafb3c341..2af77ffdec3 100644 --- a/src/server/game/Maps/Map.cpp +++ b/src/server/game/Maps/Map.cpp @@ -405,6 +405,13 @@ void Map::DeleteFromWorld(Player* player) delete player; } +template<> +void Map::DeleteFromWorld(Transport* transport) +{ + ObjectAccessor::RemoveObject(transport); + delete transport; +} + void Map::EnsureGridCreated(const GridCoord &p) { std::lock_guard<std::mutex> lock(_gridLock); |