diff options
| author | Shauren <shauren.trinity@gmail.com> | 2015-09-30 00:31:21 +0200 | 
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2015-09-30 00:31:21 +0200 | 
| commit | 8745e08be020471db886e11a3a7512a751141562 (patch) | |
| tree | e1283916edf5b76baafb49a199be019ffd1d2d7f /src | |
| parent | 3fceabfa113983549b5784dfd3f42259a53c258b (diff) | |
Core/Transports: Fixed accessing deleted instance transports
Thanks @jackpoz for valgrind log and @pete318 for reproduction steps
Closes #15633
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 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<Transport>::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<std::mutex> lock(_gridLock);  | 
