diff options
| author | jackpoz <giacomopoz@gmail.com> | 2015-07-19 23:04:04 +0200 |
|---|---|---|
| committer | jackpoz <giacomopoz@gmail.com> | 2015-07-20 20:52:36 +0200 |
| commit | aa042e94c2f76e5735a8f745c3fcb7dd54cf6c0b (patch) | |
| tree | bce38c07fb3b2659a5ccf12d150e50181d66ed58 /src/server/game | |
| parent | 3c4484d782ace3e3662840dfa2574f334c0e8e9a (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.
Diffstat (limited to 'src/server/game')
| -rw-r--r-- | src/server/game/World/World.cpp | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp index ab109d8dc2f..fc79f351a54 100644 --- a/src/server/game/World/World.cpp +++ b/src/server/game/World/World.cpp @@ -1375,15 +1375,16 @@ void World::SetInitialWorldSettings() LoadDBCStores(m_dataPath); DetectDBCLang(); - 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(); |
