[MAINT-3555] Crash in LLPanel::~LLPanel() on shutdown
- Added clear() after DeletePointer() call to hopfully fix this...master
parent
f0d4d50a18
commit
a72e34a345
|
|
@ -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();
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -120,6 +120,7 @@ LLTexGlobalColorInfo::LLTexGlobalColorInfo()
|
|||
LLTexGlobalColorInfo::~LLTexGlobalColorInfo()
|
||||
{
|
||||
for_each(mParamColorInfoList.begin(), mParamColorInfoList.end(), DeletePointer());
|
||||
mParamColorInfoList.clear();
|
||||
}
|
||||
|
||||
BOOL LLTexGlobalColorInfo::parseXml(LLXmlTreeNode* node)
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
|
|
|
|||
|
|
@ -90,7 +90,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()
|
||||
|
|
@ -456,6 +458,7 @@ LLKeyframeMotion::LLKeyframeMotion(const LLUUID &id)
|
|||
LLKeyframeMotion::~LLKeyframeMotion()
|
||||
{
|
||||
for_each(mConstraints.begin(), mConstraints.end(), DeletePointer());
|
||||
mConstraints.clear();
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
|
|
|||
|
|
@ -59,6 +59,7 @@ LLMultiGesture::LLMultiGesture()
|
|||
LLMultiGesture::~LLMultiGesture()
|
||||
{
|
||||
std::for_each(mSteps.begin(), mSteps.end(), DeletePointer());
|
||||
mSteps.clear();
|
||||
}
|
||||
|
||||
void LLMultiGesture::reset()
|
||||
|
|
|
|||
|
|
@ -436,8 +436,8 @@ namespace LLError
|
|||
|
||||
~Settings()
|
||||
{
|
||||
for_each(recorders.begin(), recorders.end(),
|
||||
DeletePointer());
|
||||
for_each(recorders.begin(), recorders.end(), DeletePointer());
|
||||
recorders.clear();
|
||||
}
|
||||
|
||||
static Settings*& getPtr();
|
||||
|
|
|
|||
|
|
@ -225,7 +225,7 @@ LLBufferArray::LLBufferArray() :
|
|||
LLBufferArray::~LLBufferArray()
|
||||
{
|
||||
std::for_each(mBuffers.begin(), mBuffers.end(), DeletePointer());
|
||||
|
||||
mBuffers.clear();
|
||||
delete mMutexp;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -281,6 +281,7 @@ LLCacheName::Impl::~Impl()
|
|||
{
|
||||
for_each(mCache.begin(), mCache.end(), DeletePairedPointer());
|
||||
for_each(mReplyQueue.begin(), mReplyQueue.end(), DeletePointer());
|
||||
mReplyQueue.clear();
|
||||
}
|
||||
|
||||
boost::signals2::connection LLCacheName::Impl::addPending(const LLUUID& id, const LLCacheNameCallback& callback)
|
||||
|
|
|
|||
|
|
@ -1780,6 +1780,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
|
||||
|
|
|
|||
|
|
@ -80,7 +80,9 @@ LLKeywords::~LLKeywords()
|
|||
{
|
||||
std::for_each(mWordTokenMap.begin(), mWordTokenMap.end(), DeletePairedPointer());
|
||||
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 )
|
||||
|
|
|
|||
|
|
@ -328,6 +328,7 @@ LLScrollListCtrl::~LLScrollListCtrl()
|
|||
delete mSortCallback;
|
||||
|
||||
std::for_each(mItemList.begin(), mItemList.end(), DeletePointer());
|
||||
mItemList.clear();
|
||||
std::for_each(mColumns.begin(), mColumns.end(), DeletePairedPointer());
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -307,6 +307,7 @@ LLTabContainer::LLTabContainer(const LLTabContainer::Params& p)
|
|||
LLTabContainer::~LLTabContainer()
|
||||
{
|
||||
std::for_each(mTabList.begin(), mTabList.end(), DeletePointer());
|
||||
mTabList.clear();
|
||||
}
|
||||
|
||||
//virtual
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1835,6 +1835,7 @@ void LLVFS::audit()
|
|||
}
|
||||
|
||||
for_each(audit_blocks.begin(), audit_blocks.end(), DeletePointer());
|
||||
audit_blocks.clear();
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -124,6 +124,7 @@ LLAvatarTracker::~LLAvatarTracker()
|
|||
{
|
||||
deleteTrackingData();
|
||||
std::for_each(mObservers.begin(), mObservers.end(), DeletePointer());
|
||||
mObservers.clear();
|
||||
std::for_each(mBuddyInfo.begin(), mBuddyInfo.end(), DeletePairedPointer());
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -81,6 +81,7 @@ LLRoleActionSet::~LLRoleActionSet()
|
|||
{
|
||||
delete mActionSetData;
|
||||
std::for_each(mActions.begin(), mActions.end(), DeletePointer());
|
||||
mActions.clear();
|
||||
}
|
||||
|
||||
//
|
||||
|
|
|
|||
|
|
@ -133,6 +133,7 @@ LLToastNotifyPanel::~LLToastNotifyPanel()
|
|||
mButtonClickConnection.disconnect();
|
||||
|
||||
std::for_each(mBtnCallbackData.begin(), mBtnCallbackData.end(), DeletePointer());
|
||||
mBtnCallbackData.clear();
|
||||
if (mIsTip)
|
||||
{
|
||||
LLNotifications::getInstance()->cancel(mNotification);
|
||||
|
|
|
|||
Loading…
Reference in New Issue