diff options
36 files changed, 87 insertions, 14 deletions
| @@ -473,3 +473,4 @@ d40c66e410741de7e90b1ed6dac28dd8a2d7e1f6 3.6.8-release  88bbfd7a6971033f3aa103f3a3500ceb4c73521b 3.6.12-release  0d9b9e50f1a8880e05f15688a9ec7d09e0e81013 3.6.13-release  5d746de933a98ca17887cde2fece80e9c7ab0b98 3.7.0-release +dcb4981ce255841b6083d8f65444b65d5a733a17 3.7.1-release diff --git a/indra/llappearance/llavatarappearance.cpp b/indra/llappearance/llavatarappearance.cpp index ce2b51cea2..0f5d729e77 100644 --- a/indra/llappearance/llavatarappearance.cpp +++ b/indra/llappearance/llavatarappearance.cpp @@ -81,6 +81,7 @@ public:  	~LLAvatarBoneInfo()  	{  		std::for_each(mChildList.begin(), mChildList.end(), DeletePointer()); +		mChildList.clear();  	}  	BOOL parseXml(LLXmlTreeNode* node); @@ -108,6 +109,7 @@ public:  	~LLAvatarSkeletonInfo()  	{  		std::for_each(mBoneInfoList.begin(), mBoneInfoList.end(), DeletePointer()); +		mBoneInfoList.clear();  	}  	BOOL parseXml(LLXmlTreeNode* node);  	S32 getNumBones() const { return mNumBones; } @@ -132,14 +134,26 @@ LLAvatarAppearance::LLAvatarXmlInfo::LLAvatarXmlInfo()  LLAvatarAppearance::LLAvatarXmlInfo::~LLAvatarXmlInfo()  {  	std::for_each(mMeshInfoList.begin(), mMeshInfoList.end(), DeletePointer()); +	mMeshInfoList.clear(); +  	std::for_each(mSkeletalDistortionInfoList.begin(), mSkeletalDistortionInfoList.end(), DeletePointer());		 +	mSkeletalDistortionInfoList.clear(); +  	std::for_each(mAttachmentInfoList.begin(), mAttachmentInfoList.end(), DeletePointer()); +	mAttachmentInfoList.clear(); +  	deleteAndClear(mTexSkinColorInfo);  	deleteAndClear(mTexHairColorInfo);  	deleteAndClear(mTexEyeColorInfo); +  	std::for_each(mLayerInfoList.begin(), mLayerInfoList.end(), DeletePointer());		 +	mLayerInfoList.clear(); +  	std::for_each(mDriverInfoList.begin(), mDriverInfoList.end(), DeletePointer()); +	mDriverInfoList.clear(); +  	std::for_each(mMorphMaskInfoList.begin(), mMorphMaskInfoList.end(), DeletePointer()); +	mMorphMaskInfoList.clear();  } diff --git a/indra/llappearance/lltexglobalcolor.cpp b/indra/llappearance/lltexglobalcolor.cpp index f38b982104..16b0260d1a 100644 --- a/indra/llappearance/lltexglobalcolor.cpp +++ b/indra/llappearance/lltexglobalcolor.cpp @@ -120,6 +120,7 @@ LLTexGlobalColorInfo::LLTexGlobalColorInfo()  LLTexGlobalColorInfo::~LLTexGlobalColorInfo()  {  	for_each(mParamColorInfoList.begin(), mParamColorInfoList.end(), DeletePointer()); +	mParamColorInfoList.clear();  }  BOOL LLTexGlobalColorInfo::parseXml(LLXmlTreeNode* node) diff --git a/indra/llappearance/lltexlayer.cpp b/indra/llappearance/lltexlayer.cpp index a3a8616864..63d01999f0 100644 --- a/indra/llappearance/lltexlayer.cpp +++ b/indra/llappearance/lltexlayer.cpp @@ -195,6 +195,7 @@ LLTexLayerSetInfo::LLTexLayerSetInfo() :  LLTexLayerSetInfo::~LLTexLayerSetInfo( )  {  	std::for_each(mLayerInfoList.begin(), mLayerInfoList.end(), DeletePointer()); +	mLayerInfoList.clear();  }  BOOL LLTexLayerSetInfo::parseXml(LLXmlTreeNode* node) @@ -282,7 +283,10 @@ LLTexLayerSet::~LLTexLayerSet()  {  	deleteCaches();  	std::for_each(mLayerList.begin(), mLayerList.end(), DeletePointer()); +	mLayerList.clear(); +  	std::for_each(mMaskLayerList.begin(), mMaskLayerList.end(), DeletePointer()); +	mMaskLayerList.clear();  }  //----------------------------------------------------------------------------- @@ -652,7 +656,9 @@ LLTexLayerInfo::LLTexLayerInfo() :  LLTexLayerInfo::~LLTexLayerInfo( )  {  	std::for_each(mParamColorInfoList.begin(), mParamColorInfoList.end(), DeletePointer()); +	mParamColorInfoList.clear();  	std::for_each(mParamAlphaInfoList.begin(), mParamAlphaInfoList.end(), DeletePointer()); +	mParamAlphaInfoList.clear();  }  BOOL LLTexLayerInfo::parseXml(LLXmlTreeNode* node) diff --git a/indra/llcharacter/llbvhloader.cpp b/indra/llcharacter/llbvhloader.cpp index 2a0df26384..8c02a25367 100755 --- a/indra/llcharacter/llbvhloader.cpp +++ b/indra/llcharacter/llbvhloader.cpp @@ -203,6 +203,7 @@ LLBVHLoader::LLBVHLoader(const char* buffer, ELoadStatus &loadStatus, S32 &error  LLBVHLoader::~LLBVHLoader()  {  	std::for_each(mJoints.begin(),mJoints.end(),DeletePointer()); +	mJoints.clear();  }  //------------------------------------------------------------------------ diff --git a/indra/llcharacter/llkeyframemotion.cpp b/indra/llcharacter/llkeyframemotion.cpp index 07ef52228e..2241a59513 100755 --- a/indra/llcharacter/llkeyframemotion.cpp +++ b/indra/llcharacter/llkeyframemotion.cpp @@ -81,7 +81,9 @@ LLKeyframeMotion::JointMotionList::JointMotionList()  LLKeyframeMotion::JointMotionList::~JointMotionList()  {  	for_each(mConstraints.begin(), mConstraints.end(), DeletePointer()); +	mConstraints.clear();  	for_each(mJointMotionArray.begin(), mJointMotionArray.end(), DeletePointer()); +	mJointMotionArray.clear();  }  U32 LLKeyframeMotion::JointMotionList::dumpDiagInfo() @@ -447,6 +449,7 @@ LLKeyframeMotion::LLKeyframeMotion(const LLUUID &id)  LLKeyframeMotion::~LLKeyframeMotion()  {  	for_each(mConstraints.begin(), mConstraints.end(), DeletePointer()); +	mConstraints.clear();  }  //----------------------------------------------------------------------------- diff --git a/indra/llcharacter/llmultigesture.cpp b/indra/llcharacter/llmultigesture.cpp index e2d284834f..411bb094fd 100755 --- a/indra/llcharacter/llmultigesture.cpp +++ b/indra/llcharacter/llmultigesture.cpp @@ -59,6 +59,7 @@ LLMultiGesture::LLMultiGesture()  LLMultiGesture::~LLMultiGesture()  {  	std::for_each(mSteps.begin(), mSteps.end(), DeletePointer()); +	mSteps.clear();  }  void LLMultiGesture::reset() diff --git a/indra/llcharacter/llpose.cpp b/indra/llcharacter/llpose.cpp index 55e1b6e9ea..b1a7ebb159 100755 --- a/indra/llcharacter/llpose.cpp +++ b/indra/llcharacter/llpose.cpp @@ -461,6 +461,7 @@ LLPoseBlender::LLPoseBlender()  LLPoseBlender::~LLPoseBlender()  {  	for_each(mJointStateBlenderPool.begin(), mJointStateBlenderPool.end(), DeletePairedPointer()); +	mJointStateBlenderPool.clear();  }  //----------------------------------------------------------------------------- diff --git a/indra/llcommon/llerror.cpp b/indra/llcommon/llerror.cpp index d2af004cde..853f279c95 100755 --- a/indra/llcommon/llerror.cpp +++ b/indra/llcommon/llerror.cpp @@ -429,8 +429,8 @@ namespace LLError  		~Settings()  		{ -			for_each(recorders.begin(), recorders.end(), -					 DeletePointer()); +			for_each(recorders.begin(), recorders.end(), DeletePointer()); +			recorders.clear();  		}  		static Settings*& getPtr(); diff --git a/indra/llcommon/llfasttimer.cpp b/indra/llcommon/llfasttimer.cpp index 01b6e60d2b..58db7d0d17 100755 --- a/indra/llcommon/llfasttimer.cpp +++ b/indra/llcommon/llfasttimer.cpp @@ -119,6 +119,7 @@ public:  	~NamedTimerFactory()  	{  		std::for_each(mTimers.begin(), mTimers.end(), DeletePairedPointer()); +		mTimers.clear();  		delete mTimerRoot;  	} diff --git a/indra/llcommon/llstl.h b/indra/llcommon/llstl.h index d3941e1bc9..0a39288f5a 100755 --- a/indra/llcommon/llstl.h +++ b/indra/llcommon/llstl.h @@ -98,6 +98,7 @@ struct DeletePointerArray  // The general form is:  //  //  std::for_each(somemap.begin(), somemap.end(), DeletePairedPointer()); +//  somemap.clear();		// Don't leave dangling pointers around  struct DeletePairedPointer  { diff --git a/indra/llmessage/llbuffer.cpp b/indra/llmessage/llbuffer.cpp index 01da20f060..aaa49d2ed6 100755 --- a/indra/llmessage/llbuffer.cpp +++ b/indra/llmessage/llbuffer.cpp @@ -225,7 +225,7 @@ LLBufferArray::LLBufferArray() :  LLBufferArray::~LLBufferArray()  {  	std::for_each(mBuffers.begin(), mBuffers.end(), DeletePointer()); - +	mBuffers.clear();  	delete mMutexp;  } diff --git a/indra/llmessage/llcachename.cpp b/indra/llmessage/llcachename.cpp index 267c48e1d2..13d779ff83 100755 --- a/indra/llmessage/llcachename.cpp +++ b/indra/llmessage/llcachename.cpp @@ -278,7 +278,9 @@ LLCacheName::Impl::Impl(LLMessageSystem* msg)  LLCacheName::Impl::~Impl()  {  	for_each(mCache.begin(), mCache.end(), DeletePairedPointer()); +	mCache.clear();  	for_each(mReplyQueue.begin(), mReplyQueue.end(), DeletePointer()); +	mReplyQueue.clear();  }  boost::signals2::connection LLCacheName::Impl::addPending(const LLUUID& id, const LLCacheNameCallback& callback) diff --git a/indra/llmessage/llcurl.cpp b/indra/llmessage/llcurl.cpp index 081f070866..588e6eea83 100755 --- a/indra/llmessage/llcurl.cpp +++ b/indra/llmessage/llcurl.cpp @@ -1738,6 +1738,7 @@ void LLCurl::cleanupClass()  #if SAFE_SSL  	CRYPTO_set_locking_callback(NULL);  	for_each(sSSLMutex.begin(), sSSLMutex.end(), DeletePointer()); +	sSSLMutex.clear();  #endif  	LL_CHECK_MEMORY diff --git a/indra/llmessage/llhttpnode.cpp b/indra/llmessage/llhttpnode.cpp index 5c2f73eccb..f6ccb5bdda 100755 --- a/indra/llmessage/llhttpnode.cpp +++ b/indra/llmessage/llhttpnode.cpp @@ -76,8 +76,8 @@ LLHTTPNode::LLHTTPNode()  // virtual  LLHTTPNode::~LLHTTPNode()  { -	std::for_each(impl.mNamedChildren.begin(), impl.mNamedChildren.end(), -		DeletePairedPointer()); +	std::for_each(impl.mNamedChildren.begin(), impl.mNamedChildren.end(), DeletePairedPointer()); +	impl.mNamedChildren.clear();  	delete impl.mWildcardChild; diff --git a/indra/llmessage/llmessagetemplate.h b/indra/llmessage/llmessagetemplate.h index ae8e0087c1..005a49cedf 100755 --- a/indra/llmessage/llmessagetemplate.h +++ b/indra/llmessage/llmessagetemplate.h @@ -118,6 +118,7 @@ public:  	~LLMsgData()  	{  		for_each(mMemberBlocks.begin(), mMemberBlocks.end(), DeletePairedPointer()); +		mMemberBlocks.clear();  	}  	void addBlock(LLMsgBlkData *blockp) diff --git a/indra/llrender/llfontfreetype.cpp b/indra/llrender/llfontfreetype.cpp index 058bef43a5..84c782e958 100755 --- a/indra/llrender/llfontfreetype.cpp +++ b/indra/llrender/llfontfreetype.cpp @@ -125,6 +125,7 @@ LLFontFreetype::~LLFontFreetype()  	// Delete glyph info  	std::for_each(mCharGlyphInfoMap.begin(), mCharGlyphInfoMap.end(), DeletePairedPointer()); +	mCharGlyphInfoMap.clear();  	// mFontBitmapCachep will be cleaned up by LLPointer destructor.  	// mFallbackFonts cleaned up by LLPointer destructor diff --git a/indra/llui/llkeywords.cpp b/indra/llui/llkeywords.cpp index 26d27d1f34..39153977bf 100755 --- a/indra/llui/llkeywords.cpp +++ b/indra/llui/llkeywords.cpp @@ -76,8 +76,11 @@ inline BOOL LLKeywordToken::isTail(const llwchar* s) const  LLKeywords::~LLKeywords()  {  	std::for_each(mWordTokenMap.begin(), mWordTokenMap.end(), DeletePairedPointer()); +	mWordTokenMap.clear();  	std::for_each(mLineTokenList.begin(), mLineTokenList.end(), DeletePointer()); +	mLineTokenList.clear();  	std::for_each(mDelimiterTokenList.begin(), mDelimiterTokenList.end(), DeletePointer()); +	mDelimiterTokenList.clear();  }  BOOL LLKeywords::loadFromFile( const std::string& filename ) diff --git a/indra/llui/llscrolllistctrl.cpp b/indra/llui/llscrolllistctrl.cpp index 594e1e150b..d4bbea0f8e 100755 --- a/indra/llui/llscrolllistctrl.cpp +++ b/indra/llui/llscrolllistctrl.cpp @@ -320,7 +320,9 @@ LLScrollListCtrl::~LLScrollListCtrl()  	delete mSortCallback;  	std::for_each(mItemList.begin(), mItemList.end(), DeletePointer()); +	mItemList.clear();  	std::for_each(mColumns.begin(), mColumns.end(), DeletePairedPointer()); +	mColumns.clear();  } diff --git a/indra/llui/llscrolllistitem.cpp b/indra/llui/llscrolllistitem.cpp index 5a1e96ab03..cc7f42e49a 100755 --- a/indra/llui/llscrolllistitem.cpp +++ b/indra/llui/llscrolllistitem.cpp @@ -50,6 +50,7 @@ LLScrollListItem::LLScrollListItem( const Params& p )  LLScrollListItem::~LLScrollListItem()  {  	std::for_each(mColumns.begin(), mColumns.end(), DeletePointer()); +	mColumns.clear();  }  void LLScrollListItem::addColumn(const LLScrollListCell::Params& p) diff --git a/indra/llui/lltabcontainer.cpp b/indra/llui/lltabcontainer.cpp index 76ba53ec32..2b9286f663 100755 --- a/indra/llui/lltabcontainer.cpp +++ b/indra/llui/lltabcontainer.cpp @@ -281,6 +281,7 @@ LLTabContainer::LLTabContainer(const LLTabContainer::Params& p)  LLTabContainer::~LLTabContainer()  {  	std::for_each(mTabList.begin(), mTabList.end(), DeletePointer()); +	mTabList.clear();  }  //virtual diff --git a/indra/llui/lltexteditor.cpp b/indra/llui/lltexteditor.cpp index 7896fcef95..3bac15c5d4 100755 --- a/indra/llui/lltexteditor.cpp +++ b/indra/llui/lltexteditor.cpp @@ -310,7 +310,7 @@ LLTextEditor::~LLTextEditor()  	// Scrollbar is deleted by LLView  	std::for_each(mUndoStack.begin(), mUndoStack.end(), DeletePointer()); - +	mUndoStack.clear();  	// context menu is owned by menu holder, not us  	//delete mContextMenu;  } diff --git a/indra/llvfs/llvfs.cpp b/indra/llvfs/llvfs.cpp index 82c926620a..7b589f5b96 100755 --- a/indra/llvfs/llvfs.cpp +++ b/indra/llvfs/llvfs.cpp @@ -578,6 +578,7 @@ LLVFS::~LLVFS()  	mFreeBlocksByLength.clear();  	for_each(mFreeBlocksByLocation.begin(), mFreeBlocksByLocation.end(), DeletePairedPointer()); +	mFreeBlocksByLocation.clear();  	unlockAndClose(mDataFP);  	mDataFP = NULL; @@ -1835,6 +1836,7 @@ void LLVFS::audit()  	}  	for_each(audit_blocks.begin(), audit_blocks.end(), DeletePointer()); +	audit_blocks.clear();  } diff --git a/indra/llwindow/lldxhardware.cpp b/indra/llwindow/lldxhardware.cpp index 3579b5d42f..b0f4bc5503 100755 --- a/indra/llwindow/lldxhardware.cpp +++ b/indra/llwindow/lldxhardware.cpp @@ -171,6 +171,7 @@ std::string LLDXDriverFile::dump()  LLDXDevice::~LLDXDevice()  {  	for_each(mDriverFiles.begin(), mDriverFiles.end(), DeletePairedPointer()); +	mDriverFiles.clear();  }  std::string LLDXDevice::dump() @@ -230,6 +231,7 @@ LLDXHardware::LLDXHardware()  void LLDXHardware::cleanup()  {    // for_each(mDevices.begin(), mDevices.end(), DeletePairedPointer()); +  // mDevices.clear();  }  /* diff --git a/indra/newview/VIEWER_VERSION.txt b/indra/newview/VIEWER_VERSION.txt index a76ccff2a6..0b2eb36f50 100644 --- a/indra/newview/VIEWER_VERSION.txt +++ b/indra/newview/VIEWER_VERSION.txt @@ -1 +1 @@ -3.7.1 +3.7.2 diff --git a/indra/newview/featuretable_mac.txt b/indra/newview/featuretable_mac.txt index 0bdd425504..a2d68eb550 100755 --- a/indra/newview/featuretable_mac.txt +++ b/indra/newview/featuretable_mac.txt @@ -1,4 +1,4 @@ -version 35 +version 36  // The version number above should be implemented IF AND ONLY IF some  // change has been made that is sufficiently important to justify  // resetting the graphics preferences of all users to the recommended @@ -628,3 +628,6 @@ Disregard128DefaultDrawDistance	1	0  list NVIDIA_GeForce_Go_7400  Disregard128DefaultDrawDistance	1	0 +list OSX_10_6_8 +RenderDeferred 0 0 + diff --git a/indra/newview/llcallingcard.cpp b/indra/newview/llcallingcard.cpp index 14583e402d..91741c2a77 100755 --- a/indra/newview/llcallingcard.cpp +++ b/indra/newview/llcallingcard.cpp @@ -115,7 +115,9 @@ LLAvatarTracker::~LLAvatarTracker()  {  	deleteTrackingData();  	std::for_each(mObservers.begin(), mObservers.end(), DeletePointer()); +	mObservers.clear();  	std::for_each(mBuddyInfo.begin(), mBuddyInfo.end(), DeletePairedPointer()); +	mBuddyInfo.clear();  }  void LLAvatarTracker::track(const LLUUID& avatar_id, const std::string& name) diff --git a/indra/newview/llfeaturemanager.cpp b/indra/newview/llfeaturemanager.cpp index 73607e100a..ba6f26d3ef 100755 --- a/indra/newview/llfeaturemanager.cpp +++ b/indra/newview/llfeaturemanager.cpp @@ -925,6 +925,14 @@ void LLFeatureManager::applyBaseMasks()  		maskFeatures("VRAMGT512");  	} +#if LL_DARWIN +	const LLOSInfo& osInfo = LLAppViewer::instance()->getOSInfo(); +	if (osInfo.mMajorVer == 10 && osInfo.mMinorVer < 7) +	{ +		maskFeatures("OSX_10_6_8"); +        } +#endif +  	// now mask by gpu string  	// Replaces ' ' with '_' in mGPUString to deal with inability for parser to handle spaces  	std::string gpustr = mGPUString; diff --git a/indra/newview/llfloaterpay.cpp b/indra/newview/llfloaterpay.cpp index b0009fd94f..f0c010b545 100755 --- a/indra/newview/llfloaterpay.cpp +++ b/indra/newview/llfloaterpay.cpp @@ -135,6 +135,7 @@ LLFloaterPay::LLFloaterPay(const LLSD& key)  LLFloaterPay::~LLFloaterPay()  {  	std::for_each(mCallbackData.begin(), mCallbackData.end(), DeletePointer()); +	mCallbackData.clear();  	// Name callbacks will be automatically disconnected since LLFloater is trackable  	// In case this floater is currently waiting for a reply. diff --git a/indra/newview/llfloaterwebcontent.cpp b/indra/newview/llfloaterwebcontent.cpp index 76b73fcf29..68dbb5ae33 100755 --- a/indra/newview/llfloaterwebcontent.cpp +++ b/indra/newview/llfloaterwebcontent.cpp @@ -372,7 +372,10 @@ void LLFloaterWebContent::handleMediaEvent(LLPluginClassMedia* self, EMediaEvent  	}  	else if(event == MEDIA_EVENT_GEOMETRY_CHANGE)  	{ -		geometryChanged(self->getGeometryX(), self->getGeometryY(), self->getGeometryWidth(), self->getGeometryHeight()); +		if (mCurrentURL.find("facebook.com/dialog/oauth") == std::string::npos) // HACK to fix ACME-1317 - Cho +		{ +			geometryChanged(self->getGeometryX(), self->getGeometryY(), self->getGeometryWidth(), self->getGeometryHeight()); +		}  	}  	else if(event == MEDIA_EVENT_STATUS_TEXT_CHANGED )  	{ diff --git a/indra/newview/llgroupmgr.cpp b/indra/newview/llgroupmgr.cpp index 3dcf7cd8aa..9c0b486cc5 100755 --- a/indra/newview/llgroupmgr.cpp +++ b/indra/newview/llgroupmgr.cpp @@ -77,6 +77,7 @@ LLRoleActionSet::~LLRoleActionSet()  {  	delete mActionSetData;  	std::for_each(mActions.begin(), mActions.end(), DeletePointer()); +	mActions.clear();  }  // diff --git a/indra/newview/lllandmarklist.cpp b/indra/newview/lllandmarklist.cpp index dd402de394..a92df8250e 100755 --- a/indra/newview/lllandmarklist.cpp +++ b/indra/newview/lllandmarklist.cpp @@ -46,6 +46,7 @@ LLLandmarkList gLandmarkList;  LLLandmarkList::~LLLandmarkList()  {  	std::for_each(mList.begin(), mList.end(), DeletePairedPointer()); +	mList.clear();  }  LLLandmark* LLLandmarkList::getAsset(const LLUUID& asset_uuid, loaded_callback_t cb) diff --git a/indra/newview/lltoastnotifypanel.cpp b/indra/newview/lltoastnotifypanel.cpp index 7d48634381..9824f2dd38 100755 --- a/indra/newview/lltoastnotifypanel.cpp +++ b/indra/newview/lltoastnotifypanel.cpp @@ -131,6 +131,7 @@ LLToastNotifyPanel::~LLToastNotifyPanel()  	mButtonClickConnection.disconnect();  	std::for_each(mBtnCallbackData.begin(), mBtnCallbackData.end(), DeletePointer()); +	mBtnCallbackData.clear();  	if (mIsTip)  		{  			LLNotifications::getInstance()->cancel(mNotification); diff --git a/indra/newview/llvograss.cpp b/indra/newview/llvograss.cpp index 485b0dc8ad..600b44d371 100755 --- a/indra/newview/llvograss.cpp +++ b/indra/newview/llvograss.cpp @@ -241,6 +241,7 @@ void LLVOGrass::initClass()  void LLVOGrass::cleanupClass()  {  	for_each(sSpeciesTable.begin(), sSpeciesTable.end(), DeletePairedPointer()); +	sSpeciesTable.clear();  }  U32 LLVOGrass::processUpdateMessage(LLMessageSystem *mesgsys, diff --git a/indra/newview/llvotree.cpp b/indra/newview/llvotree.cpp index 6a89100bf5..b82c4fe769 100755 --- a/indra/newview/llvotree.cpp +++ b/indra/newview/llvotree.cpp @@ -269,6 +269,7 @@ void LLVOTree::initClass()  void LLVOTree::cleanupClass()  {  	std::for_each(sSpeciesTable.begin(), sSpeciesTable.end(), DeletePairedPointer()); +	sSpeciesTable.clear();  }  U32 LLVOTree::processUpdateMessage(LLMessageSystem *mesgsys, diff --git a/indra/newview/llworld.cpp b/indra/newview/llworld.cpp index 103668d051..85614f397c 100755 --- a/indra/newview/llworld.cpp +++ b/indra/newview/llworld.cpp @@ -143,23 +143,24 @@ LLViewerRegion* LLWorld::addRegion(const U64 ®ion_handle, const LLHost &host)  	std::string seedUrl;  	if (regionp)  	{ -		llinfos << "Region exists, removing it " << llendl;  		LLHost old_host = regionp->getHost();  		// region already exists!  		if (host == old_host && regionp->isAlive())  		{  			// This is a duplicate for the same host and it's alive, don't bother. +			llinfos << "Region already exists and is alive, using existing region" << llendl;  			return regionp;  		}  		if (host != old_host)  		{  			llwarns << "LLWorld::addRegion exists, but old host " << old_host -					<< " does not match new host " << host << llendl; +					<< " does not match new host " << host  +					<< ", removing old region and creating new" << llendl;  		}  		if (!regionp->isAlive())  		{ -			llwarns << "LLWorld::addRegion exists, but isn't alive" << llendl; +			llwarns << "LLWorld::addRegion exists, but isn't alive. Removing old region and creating new" << llendl;  		}  		// Save capabilities seed URL @@ -169,14 +170,18 @@ LLViewerRegion* LLWorld::addRegion(const U64 ®ion_handle, const LLHost &host)  		// matches, because all the agent state for the new camera is completely different.  		removeRegion(old_host);  	} +	else +	{ +		llinfos << "Region does not exist, creating new one" << llendl; +	}  	U32 iindex = 0;  	U32 jindex = 0;  	from_region_handle(region_handle, &iindex, &jindex);  	S32 x = (S32)(iindex/mWidth);  	S32 y = (S32)(jindex/mWidth); -	llinfos << "Adding new region (" << x << ":" << y << ")" << llendl; -	llinfos << "Host: " << host << llendl; +	llinfos << "Adding new region (" << x << ":" << y << ")"  +		<< " on host: " << host << llendl;  	LLVector3d origin_global; | 
