summaryrefslogtreecommitdiff
path: root/indra/llcommon/llinstancetracker.cpp
diff options
context:
space:
mode:
authorPaul ProductEngine <pguslisty@productengine.com>2011-09-29 18:03:39 +0300
committerPaul ProductEngine <pguslisty@productengine.com>2011-09-29 18:03:39 +0300
commit6a463a41fec89c7f1eadb77c16eeae169ff777d0 (patch)
treef297c32418eb139eded752ce99b418773328e458 /indra/llcommon/llinstancetracker.cpp
parentc44db34a15abd2e96b8fd461e9fb3e217fe648cc (diff)
parent71ed326f51770b215ba5dd2ac8d159c3b764c2d2 (diff)
Merge sergeylproductengine/viewer-experience-fui with richard/viewer-experience-fui
Diffstat (limited to 'indra/llcommon/llinstancetracker.cpp')
-rw-r--r--indra/llcommon/llinstancetracker.cpp19
1 files changed, 10 insertions, 9 deletions
diff --git a/indra/llcommon/llinstancetracker.cpp b/indra/llcommon/llinstancetracker.cpp
index f576204511..5dc3ea5d7b 100644
--- a/indra/llcommon/llinstancetracker.cpp
+++ b/indra/llcommon/llinstancetracker.cpp
@@ -35,14 +35,15 @@
//static
void * & LLInstanceTrackerBase::getInstances(std::type_info const & info)
{
- static std::map<std::string, void *> instances;
+ typedef std::map<std::string, void *> InstancesMap;
+ static InstancesMap instances;
- std::string k = info.name();
- if(instances.find(k) == instances.end())
- {
- instances[k] = NULL;
- }
-
- return instances[k];
+ // std::map::insert() is just what we want here. You attempt to insert a
+ // (key, value) pair. If the specified key doesn't yet exist, it inserts
+ // the pair and returns a std::pair of (iterator, true). If the specified
+ // key DOES exist, insert() simply returns (iterator, false). One lookup
+ // handles both cases.
+ return instances.insert(InstancesMap::value_type(info.name(),
+ InstancesMap::mapped_type()))
+ .first->second;
}
-