aboutsummaryrefslogtreecommitdiff
path: root/src/server/game
diff options
context:
space:
mode:
authorjackpoz <giacomopoz@gmail.com>2015-07-19 19:06:55 +0200
committerDDuarte <dnpd.dd@gmail.com>2015-07-20 01:11:55 +0100
commit87a5ba09e5e471b6d771a7c38c34cf7877cb7dbc (patch)
tree2cdc9fcf802a69aebcae487c6c838c10284305d3 /src/server/game
parent31f1169f8a60737a06dc8558c1208ca69fee7553 (diff)
Core/Collision: Fix race conditions in vmaps
Fix a race condition in VMapManager2 happening whenever a map was unloaded. GridUnload enabled was required to trigger the race condition. (cherry picked from commit ca7f31c6cdceb7e2921d5d83e1ae22ccb247988d)
Diffstat (limited to 'src/server/game')
-rw-r--r--src/server/game/World/World.cpp10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp
index 7746607d9e6..948729c6d70 100644
--- a/src/server/game/World/World.cpp
+++ b/src/server/game/World/World.cpp
@@ -1471,6 +1471,16 @@ void World::SetInitialWorldSettings()
sSpellMgr->LoadPetFamilySpellsStore();
+ if (VMAP::VMapManager2* vmmgr2 = dynamic_cast<VMAP::VMapManager2*>(VMAP::VMapFactory::createOrGetVMapManager()))
+ {
+ std::vector<uint32> mapIds;
+ for (uint32 mapId = 0; mapId < sMapStore.GetNumRows(); mapId++)
+ if (sMapStore.LookupEntry(mapId))
+ mapIds.push_back(mapId);
+
+ vmmgr2->InitializeThreadUnsafe(mapIds);
+ }
+
TC_LOG_INFO("server.loading", "Loading SpellInfo store...");
sSpellMgr->LoadSpellInfoStore();