aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/World
diff options
context:
space:
mode:
authorjackpoz <giacomopoz@gmail.com>2015-07-19 23:04:04 +0200
committerDDuarte <dnpd.dd@gmail.com>2015-07-21 19:01:44 +0100
commitd41f87e62abef6fa4b0dc23274023d91bdc005d8 (patch)
tree03dbd38681c16d41ecef8dc30165d8d5fe4a127d /src/server/game/World
parentdb3a35524999c8af1023896be44da48b19607a73 (diff)
Core/Collision: Fix race conditions in mmaps
Fix a race condition in MMapManager happening whenever a map was unloaded. GridUnload enabled was required to trigger the race condition. (cherry picked from commit aa042e94c2f76e5735a8f745c3fcb7dd54cf6c0b) Conflicts: src/server/collision/Management/MMapManager.cpp src/server/collision/Management/MMapManager.h
Diffstat (limited to 'src/server/game/World')
-rw-r--r--src/server/game/World/World.cpp15
1 files changed, 8 insertions, 7 deletions
diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp
index 948729c6d70..2fdb8a52aa2 100644
--- a/src/server/game/World/World.cpp
+++ b/src/server/game/World/World.cpp
@@ -1471,15 +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);
+ std::vector<uint32> mapIds;
+ for (uint32 mapId = 0; mapId < sMapStore.GetNumRows(); mapId++)
+ if (sMapStore.LookupEntry(mapId))
+ mapIds.push_back(mapId);
+ if (VMAP::VMapManager2* vmmgr2 = dynamic_cast<VMAP::VMapManager2*>(VMAP::VMapFactory::createOrGetVMapManager()))
vmmgr2->InitializeThreadUnsafe(mapIds);
- }
+
+ MMAP::MMapManager* mmmgr = MMAP::MMapFactory::createOrGetMMapManager();
+ mmmgr->InitializeThreadUnsafe(mapIds);
TC_LOG_INFO("server.loading", "Loading SpellInfo store...");
sSpellMgr->LoadSpellInfoStore();