diff options
author | Shauren <shauren.trinity@gmail.com> | 2023-01-15 14:25:18 +0100 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2023-01-15 14:25:18 +0100 |
commit | 3fc3cd455b51d2de4ba5a70b7eff15e23b3da481 (patch) | |
tree | 1291c14bb69c9cbf2fbcf73032ee5a42d3cf7ca8 /src | |
parent | badb55bfd97c16fecfb8cd73ba99e39ecb6b622d (diff) |
Core/Battlegrounds: Unload all grids before destroying battleground object
Closes #28755
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Battlegrounds/Battleground.cpp | 4 | ||||
-rw-r--r-- | src/server/game/Maps/Map.h | 2 |
2 files changed, 4 insertions, 2 deletions
diff --git a/src/server/game/Battlegrounds/Battleground.cpp b/src/server/game/Battlegrounds/Battleground.cpp index 5d93ebd8b85..00f03068dc0 100644 --- a/src/server/game/Battlegrounds/Battleground.cpp +++ b/src/server/game/Battlegrounds/Battleground.cpp @@ -134,7 +134,9 @@ Battleground::~Battleground() // unload map if (m_Map) { - m_Map->SetUnload(); + m_Map->UnloadAll(); // unload all objects (they may hold a reference to bg in their ZoneScript pointer) + m_Map->SetUnload(); // mark for deletion by MapManager + //unlink to prevent crash, always unlink all pointer reference before destruction m_Map->SetBG(nullptr); m_Map = nullptr; diff --git a/src/server/game/Maps/Map.h b/src/server/game/Maps/Map.h index da4aa7ced8e..e0fcfabd056 100644 --- a/src/server/game/Maps/Map.h +++ b/src/server/game/Maps/Map.h @@ -244,7 +244,7 @@ class TC_GAME_API Map : public GridRefManager<NGridType> bool UnloadGrid(NGridType& ngrid, bool pForce); void GridMarkNoUnload(uint32 x, uint32 y); void GridUnmarkNoUnload(uint32 x, uint32 y); - virtual void UnloadAll(); + void UnloadAll(); void ResetGridExpiry(NGridType &grid, float factor = 1) const { |