aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xsrc/server/game/Battlegrounds/BattlegroundMgr.cpp3
-rwxr-xr-xsrc/server/game/Maps/MapInstanced.cpp6
2 files changed, 6 insertions, 3 deletions
diff --git a/src/server/game/Battlegrounds/BattlegroundMgr.cpp b/src/server/game/Battlegrounds/BattlegroundMgr.cpp
index d9ed56da58c..e58ba68df46 100755
--- a/src/server/game/Battlegrounds/BattlegroundMgr.cpp
+++ b/src/server/game/Battlegrounds/BattlegroundMgr.cpp
@@ -111,9 +111,6 @@ void BattlegroundMgr::Update(uint32 diff)
if (!m_ClientBattlegroundIds[i][bg->GetBracketId()].empty())
m_ClientBattlegroundIds[i][bg->GetBracketId()].erase(bg->GetClientInstanceID());
- // Free up the instance id and allow it to be reused
- sMapMgr->FreeInstanceId(bg->GetInstanceID());
-
delete bg;
}
}
diff --git a/src/server/game/Maps/MapInstanced.cpp b/src/server/game/Maps/MapInstanced.cpp
index 1567bcf2397..7dc126ce237 100755
--- a/src/server/game/Maps/MapInstanced.cpp
+++ b/src/server/game/Maps/MapInstanced.cpp
@@ -245,9 +245,15 @@ bool MapInstanced::DestroyInstance(InstancedMaps::iterator &itr)
// so in the next map creation, (EnsureGridCreated actually) VMaps will be reloaded
Map::UnloadAll();
}
+
+ // Free up the instance id and allow it to be reused for bgs and arenas (other instances are handled in the InstanceSaveMgr)
+ if (itr->second->IsBattlegroundOrArena())
+ sMapMgr->FreeInstanceId(itr->second->GetInstanceId());
+
// erase map
delete itr->second;
m_InstancedMaps.erase(itr++);
+
return true;
}