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,