From 8745e08be020471db886e11a3a7512a751141562 Mon Sep 17 00:00:00 2001 From: Shauren Date: Wed, 30 Sep 2015 00:31:21 +0200 Subject: Core/Transports: Fixed accessing deleted instance transports Thanks @jackpoz for valgrind log and @pete318 for reproduction steps Closes #15633 --- src/server/game/Entities/Transport/Transport.cpp | 1 - src/server/game/Maps/Map.cpp | 7 +++++++ 2 files changed, 7 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/server/game/Entities/Transport/Transport.cpp b/src/server/game/Entities/Transport/Transport.cpp index e6b3067cc2a..8b49f61a176 100644 --- a/src/server/game/Entities/Transport/Transport.cpp +++ b/src/server/game/Entities/Transport/Transport.cpp @@ -100,7 +100,6 @@ bool Transport::Create(ObjectGuid::LowType guidlow, uint32 entry, uint32 mapid, void Transport::CleanupsBeforeDelete(bool finalCleanup /*= true*/) { - HashMapHolder::Remove(this); UnloadStaticPassengers(); while (!_passengers.empty()) { diff --git a/src/server/game/Maps/Map.cpp b/src/server/game/Maps/Map.cpp index 1e35722202c..85cc87eaa6e 100644 --- a/src/server/game/Maps/Map.cpp +++ b/src/server/game/Maps/Map.cpp @@ -404,6 +404,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 lock(_gridLock); -- cgit v1.2.3