diff options
| author | jackpoz <giacomopoz@gmail.com> | 2015-07-19 23:04:04 +0200 |
|---|---|---|
| committer | DDuarte <dnpd.dd@gmail.com> | 2015-07-21 19:01:44 +0100 |
| commit | d41f87e62abef6fa4b0dc23274023d91bdc005d8 (patch) | |
| tree | 03dbd38681c16d41ecef8dc30165d8d5fe4a127d /src/server/game/World | |
| parent | db3a35524999c8af1023896be44da48b19607a73 (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.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 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(); |
