aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2014-07-26 01:36:54 +0200
committerShauren <shauren.trinity@gmail.com>2014-07-26 01:36:54 +0200
commita98737d5d97f3001f670020d71772ece1e1d917f (patch)
tree592baad6e7e6557b1c5e9e6d139e99021d90484a /src
parente516265703cb7acc4cc05b12a3455017a9fc527b (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.h4
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;
}