diff options
Diffstat (limited to 'src')
-rwxr-xr-x | src/server/game/Battlegrounds/Battleground.cpp | 5 | ||||
-rwxr-xr-x | src/server/game/Maps/Map.cpp | 6 |
2 files changed, 11 insertions, 0 deletions
diff --git a/src/server/game/Battlegrounds/Battleground.cpp b/src/server/game/Battlegrounds/Battleground.cpp index a7176e3b550..a5feac09ea4 100755 --- a/src/server/game/Battlegrounds/Battleground.cpp +++ b/src/server/game/Battlegrounds/Battleground.cpp @@ -220,7 +220,12 @@ Battleground::~Battleground() sBattlegroundMgr->RemoveBattleground(GetInstanceID(), GetTypeID()); // unload map if (m_Map) + { m_Map->SetUnload(); + //unlink to prevent crash, always unlink all pointer reference before destruction + m_Map->SetBG(NULL); + m_Map = NULL; + } // remove from bg free slot queue RemoveFromBGFreeSlotQueue(); diff --git a/src/server/game/Maps/Map.cpp b/src/server/game/Maps/Map.cpp index c076450e98d..c81eb8b61b0 100755 --- a/src/server/game/Maps/Map.cpp +++ b/src/server/game/Maps/Map.cpp @@ -2593,6 +2593,12 @@ BattlegroundMap::BattlegroundMap(uint32 id, time_t expiry, uint32 InstanceId, Ma BattlegroundMap::~BattlegroundMap() { + if(m_bg) + { + //unlink to prevent crash, always unlink all pointer reference before destruction + m_bg->SetBgMap(NULL); + m_bg = NULL; + } } void BattlegroundMap::InitVisibilityDistance() |