diff options
author | Shauren <shauren.trinity@gmail.com> | 2025-02-02 14:15:11 +0100 |
---|---|---|
committer | Ovahlord <dreadkiller@gmx.de> | 2025-02-04 16:23:35 +0100 |
commit | 601d6e1d60a6c2c19fd3dd2d2432c0f9c626c665 (patch) | |
tree | d4a43a1c9283e49898eb99e564b9bfd122d9312a /src/server/game/Globals | |
parent | 055268d23e9798945f6ade6c5d0a25c2707d8829 (diff) |
Core/Objects: Make guid generators atomic
(cherry picked from commit 6c925ed40c4396b69303839190d6687b98c88c60)
Diffstat (limited to 'src/server/game/Globals')
-rw-r--r-- | src/server/game/Globals/ObjectMgr.cpp | 6 | ||||
-rw-r--r-- | src/server/game/Globals/ObjectMgr.h | 3 |
2 files changed, 3 insertions, 6 deletions
diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp index f46c7e18244..8419c4a957a 100644 --- a/src/server/game/Globals/ObjectMgr.cpp +++ b/src/server/game/Globals/ObjectMgr.cpp @@ -7188,11 +7188,7 @@ void ObjectMgr::SetHighestGuids() ObjectGuidGenerator& ObjectMgr::GetGuidSequenceGenerator(HighGuid high) { - auto itr = _guidGenerators.find(high); - if (itr == _guidGenerators.end()) - itr = _guidGenerators.insert(std::make_pair(high, std::make_unique<ObjectGuidGenerator>(high))).first; - - return *itr->second; + return _guidGenerators.try_emplace(high, high).first->second; } uint32 ObjectMgr::GenerateAuctionID() diff --git a/src/server/game/Globals/ObjectMgr.h b/src/server/game/Globals/ObjectMgr.h index 7de6017ecd8..f645ddacf38 100644 --- a/src/server/game/Globals/ObjectMgr.h +++ b/src/server/game/Globals/ObjectMgr.h @@ -29,6 +29,7 @@ #include "NPCHandler.h" #include "ObjectDefines.h" #include "ObjectGuid.h" +#include "ObjectGuidSequenceGenerator.h" #include "Position.h" #include "QuestDef.h" #include "RaceMask.h" @@ -1776,7 +1777,7 @@ class TC_GAME_API ObjectMgr // first free low guid for selected guid type ObjectGuidGenerator& GetGuidSequenceGenerator(HighGuid high); - std::map<HighGuid, std::unique_ptr<ObjectGuidGenerator>> _guidGenerators; + std::map<HighGuid, ObjectGuidGenerator> _guidGenerators; QuestContainer _questTemplates; std::vector<Quest const*> _questTemplatesAutoPush; QuestObjectivesByIdContainer _questObjectives; |