diff options
| author | Shauren <shauren.trinity@gmail.com> | 2014-07-26 01:36:54 +0200 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2014-07-26 01:36:54 +0200 |
| commit | a98737d5d97f3001f670020d71772ece1e1d917f (patch) | |
| tree | 592baad6e7e6557b1c5e9e6d139e99021d90484a /src | |
| parent | e516265703cb7acc4cc05b12a3455017a9fc527b (diff) | |
Core/Threading: Fixed lock type used in HashMapHolder::Insert - a write lock is needed there, not a read lock
Diffstat (limited to 'src')
| -rw-r--r-- | src/server/game/Globals/ObjectAccessor.h | 4 |
1 files changed, 3 insertions, 1 deletions
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<boost::shared_mutex> lock(_lock); + boost::unique_lock<boost::shared_mutex> lock(_lock); _objectMap[o->GetGUID()] = o; } @@ -59,12 +59,14 @@ class HashMapHolder static void Remove(T* o) { boost::unique_lock<boost::shared_mutex> lock(_lock); + _objectMap.erase(o->GetGUID()); } static T* Find(uint64 guid) { boost::shared_lock<boost::shared_mutex> lock(_lock); + typename MapType::iterator itr = _objectMap.find(guid); return (itr != _objectMap.end()) ? itr->second : NULL; } |
