diff options
| author | Richard Linden <none@none> | 2013-04-19 20:09:00 -0700 | 
|---|---|---|
| committer | Richard Linden <none@none> | 2013-04-19 20:09:00 -0700 | 
| commit | cc7d92147c4a4502ec2ac04f150e94a4ac18f79e (patch) | |
| tree | 42126cccd1dd4f8f55314b09995295e1f92e94e9 /indra | |
| parent | 04d0d5a3ab0285f0d3acc7581cea6809343e86ab (diff) | |
SH-4080 WIP interesting: random crash on Mac
removed unused dll support from llinstancetracker as it didn't appear to be thread safe
Diffstat (limited to 'indra')
| -rw-r--r-- | indra/llcommon/llinstancetracker.cpp | 16 | ||||
| -rw-r--r-- | indra/llcommon/llinstancetracker.h | 20 | 
2 files changed, 2 insertions, 34 deletions
diff --git a/indra/llcommon/llinstancetracker.cpp b/indra/llcommon/llinstancetracker.cpp index 071a637cda..7ff8324fe3 100644 --- a/indra/llcommon/llinstancetracker.cpp +++ b/indra/llcommon/llinstancetracker.cpp @@ -34,22 +34,6 @@  // external library headers  // other Linden headers -//static  -void * & LLInstanceTrackerBase::getInstances(std::type_info const & info) -{ -	typedef std::map<std::string, void *> InstancesMap; -	static InstancesMap instances; - -	// 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; -} -  void LLInstanceTrackerBase::StaticBase::incrementDepth()  {  	apr_atomic_inc32(&sIterationNestDepth); diff --git a/indra/llcommon/llinstancetracker.h b/indra/llcommon/llinstancetracker.h index 9dd6d4a7ed..596bea548d 100644 --- a/indra/llcommon/llinstancetracker.h +++ b/indra/llcommon/llinstancetracker.h @@ -46,22 +46,6 @@  class LL_COMMON_API LLInstanceTrackerBase : public boost::noncopyable  {  protected: -	/// Get a process-unique void* pointer slot for the specified type_info -	static void * & getInstances(std::type_info const & info); - -	/// Find or create a STATICDATA instance for the specified TRACKED class. -	/// STATICDATA must be default-constructible. -	template<typename STATICDATA, class TRACKED> -	static STATICDATA& getStatic() -	{ -		void *& instances = getInstances(typeid(TRACKED)); -		if (! instances) -		{ -			instances = new STATICDATA; -		} -		return *static_cast<STATICDATA*>(instances); -	} -      /// It's not essential to derive your STATICDATA (for use with      /// getStatic()) from StaticBase; it's just that both known      /// implementations do. @@ -92,7 +76,7 @@ class LLInstanceTracker : public LLInstanceTrackerBase  	{  		InstanceMap sMap;  	}; -	static StaticData& getStatic() { return LLInstanceTrackerBase::getStatic<StaticData, MyT>(); } +	static StaticData& getStatic() { static StaticData sData; return sData;}  	static InstanceMap& getMap_() { return getStatic().sMap; }  public: @@ -240,7 +224,7 @@ class LLInstanceTracker<T, void> : public LLInstanceTrackerBase  	{  		InstanceSet sSet;  	}; -	static StaticData& getStatic() { return LLInstanceTrackerBase::getStatic<StaticData, MyT>(); } +	static StaticData& getStatic() { static StaticData sData; return sData; }  	static InstanceSet& getSet_() { return getStatic().sSet; }  public:  | 
