diff options
-rw-r--r-- | indra/llappearance/llwearable.cpp | 8 | ||||
-rwxr-xr-x | indra/llcharacter/llvisualparam.cpp | 13 | ||||
-rwxr-xr-x | indra/llcharacter/llvisualparam.h | 1 |
3 files changed, 21 insertions, 1 deletions
diff --git a/indra/llappearance/llwearable.cpp b/indra/llappearance/llwearable.cpp index 6749a85f3c..d064b2982c 100644 --- a/indra/llappearance/llwearable.cpp +++ b/indra/llappearance/llwearable.cpp @@ -60,6 +60,14 @@ LLWearable::LLWearable() // virtual LLWearable::~LLWearable() { + for (visual_param_index_map_t::iterator vpIter = mVisualParamIndexMap.begin(); vpIter != mVisualParamIndexMap.end(); ++vpIter) + { + LLVisualParam* vp = vpIter->second; + vp->clearNextParam(); + delete vp; + vpIter->second = NULL; + } + destroyTextures(); } diff --git a/indra/llcharacter/llvisualparam.cpp b/indra/llcharacter/llvisualparam.cpp index 0df7fb2bc3..dd87847c18 100755 --- a/indra/llcharacter/llvisualparam.cpp +++ b/indra/llcharacter/llvisualparam.cpp @@ -178,7 +178,10 @@ LLVisualParam::LLVisualParam() //----------------------------------------------------------------------------- LLVisualParam::~LLVisualParam() { - delete mNext; + if (mNext != NULL) + { + delete mNext; + } } /* @@ -285,6 +288,14 @@ void LLVisualParam::setNextParam( LLVisualParam *next ) } //----------------------------------------------------------------------------- +// clearNextParam() +//----------------------------------------------------------------------------- +void LLVisualParam::clearNextParam() +{ + mNext = NULL; +} + +//----------------------------------------------------------------------------- // animate() //----------------------------------------------------------------------------- void LLVisualParam::animate( F32 delta, BOOL upload_bake ) diff --git a/indra/llcharacter/llvisualparam.h b/indra/llcharacter/llvisualparam.h index a4d9f93e56..78c776705f 100755 --- a/indra/llcharacter/llvisualparam.h +++ b/indra/llcharacter/llvisualparam.h @@ -155,6 +155,7 @@ public: LLVisualParam* getNextParam() { return mNext; } void setNextParam( LLVisualParam *next ); + void clearNextParam(); virtual void setAnimating(BOOL is_animating) { mIsAnimating = is_animating && !mIsDummy; } BOOL getAnimating() const { return mIsAnimating; } |