From a98737d5d97f3001f670020d71772ece1e1d917f Mon Sep 17 00:00:00 2001 From: Shauren Date: Sat, 26 Jul 2014 01:36:54 +0200 Subject: Core/Threading: Fixed lock type used in HashMapHolder::Insert - a write lock is needed there, not a read lock --- src/server/game/Globals/ObjectAccessor.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/server/game/Globals/ObjectAccessor.h b/src/server/game/Globals/ObjectAccessor.h index 8c92a8f3a6e..849ae25a335 100644 --- a/src/server/game/Globals/ObjectAccessor.h +++ b/src/server/game/Globals/ObjectAccessor.h @@ -51,7 +51,7 @@ class HashMapHolder static void Insert(T* o) { - boost::shared_lock lock(_lock); + boost::unique_lock lock(_lock); _objectMap[o->GetGUID()] = o; } @@ -59,12 +59,14 @@ class HashMapHolder static void Remove(T* o) { boost::unique_lock lock(_lock); + _objectMap.erase(o->GetGUID()); } static T* Find(uint64 guid) { boost::shared_lock lock(_lock); + typename MapType::iterator itr = _objectMap.find(guid); return (itr != _objectMap.end()) ? itr->second : NULL; } -- cgit v1.2.3