diff --git a/indra/llcharacter/llpose.cpp b/indra/llcharacter/llpose.cpp
index 55e1b6e9eaaf005f48fdac54a9318f82dbb99fa7..b1a7ebb159612bdbde8e68b3178c6c8d2f62d383 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/llfasttimer.cpp b/indra/llcommon/llfasttimer.cpp
index 01b6e60d2b0ace54c3ed94248baa8c608ec7f9af..58db7d0d1784896759a137996f59041edc840684 100755
--- a/indra/llcommon/llfasttimer.cpp
+++ b/indra/llcommon/llfasttimer.cpp
@@ -119,6 +119,7 @@ class NamedTimerFactory : public LLSingleton<NamedTimerFactory>
 	~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 d3941e1bc92c30502b0a05989ab4da896d776db5..0a39288f5a0c61e523a6e960ef3d0ca184ff6131 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/llcachename.cpp b/indra/llmessage/llcachename.cpp
index 4e22f62a112d4295cbf8f93f0791f6bf59d7b282..13d779ff83c77b396d96d273ab316b3c6df6ee83 100755
--- a/indra/llmessage/llcachename.cpp
+++ b/indra/llmessage/llcachename.cpp
@@ -278,6 +278,7 @@ 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();
 }
diff --git a/indra/llmessage/llhttpnode.cpp b/indra/llmessage/llhttpnode.cpp
index 5c2f73eccb809bb32e50900ec9fd23f0139b4596..f6ccb5bddab1f4d3dcd653f58e7c7f1f8eda0361 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 ae8e0087c14d84c590d2f178ce7b8f2469bcc7e6..005a49cedf22f8c924c267670e652f7ed446726d 100755
--- a/indra/llmessage/llmessagetemplate.h
+++ b/indra/llmessage/llmessagetemplate.h
@@ -118,6 +118,7 @@ class LLMsgData
 	~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 058bef43a566079881309508da4a20244ff874b0..84c782e958137a2f6d35f84d0de4fee3dd6939a1 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 ddf33cf6e08de212552d869e4a635ab4464c622c..39153977bf12168049b4e0ed5cb40c265ae6773e 100755
--- a/indra/llui/llkeywords.cpp
+++ b/indra/llui/llkeywords.cpp
@@ -76,6 +76,7 @@ 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());
diff --git a/indra/llui/llscrolllistctrl.cpp b/indra/llui/llscrolllistctrl.cpp
index 7cd49d5a5402723ef29f793b5f2c75e30d7dce05..d4bbea0f8eccc02d8c7370acba80ec37c512c852 100755
--- a/indra/llui/llscrolllistctrl.cpp
+++ b/indra/llui/llscrolllistctrl.cpp
@@ -322,6 +322,7 @@ LLScrollListCtrl::~LLScrollListCtrl()
 	std::for_each(mItemList.begin(), mItemList.end(), DeletePointer());
 	mItemList.clear();
 	std::for_each(mColumns.begin(), mColumns.end(), DeletePairedPointer());
+	mColumns.clear();
 }
 
 
diff --git a/indra/llvfs/llvfs.cpp b/indra/llvfs/llvfs.cpp
index b31c6a99441e83a795c6e010016c74270a48ff32..7b589f5b9672fbcb866d59b17284b53d8c363d9c 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;
diff --git a/indra/llwindow/lldxhardware.cpp b/indra/llwindow/lldxhardware.cpp
index 3579b5d42f0d09dcd1ad12c58ce89dd55677c527..b0f4bc55035dfa835c798b5000eaf6439f428ece 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/llcallingcard.cpp b/indra/newview/llcallingcard.cpp
index 56817a51baee45ee66c45670dce1b1e3f5bf5be4..91741c2a775a727f84f9589d9f6227179420f1b5 100755
--- a/indra/newview/llcallingcard.cpp
+++ b/indra/newview/llcallingcard.cpp
@@ -117,6 +117,7 @@ LLAvatarTracker::~LLAvatarTracker()
 	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/lllandmarklist.cpp b/indra/newview/lllandmarklist.cpp
index dd402de394a9564037492d74123440e8d417c7d8..a92df8250eb9eee7cb65c73eeb974e55f3b8f9ef 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/llvograss.cpp b/indra/newview/llvograss.cpp
index 485b0dc8ad4020994e1bb93e547056591440fc07..600b44d371e96e2fec13576bf1f04a0e3cdc303f 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 6a89100bf53f1b20a043301fcead6d17ce04ca54..b82c4fe76989a026ab6cc949941f08f870ac4c37 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,