diff options
| author | Alexei Arabadji <aarabadji@productengine.com> | 2010-07-06 17:00:39 +0300 | 
|---|---|---|
| committer | Alexei Arabadji <aarabadji@productengine.com> | 2010-07-06 17:00:39 +0300 | 
| commit | a03e1231486bd5c02e27b7020f53dfd2b397c215 (patch) | |
| tree | caba191612b96a7f2250e8e929d9d6508a3a1f41 | |
| parent | 6e252a356837df9b084ab46308fd7becb1085603 (diff) | |
EXT-8082 FIXED Fixed viewer crash in outfit list accordion.
Details:
1 Avoided memory leak of LLAccordionCtrlTab in LLOutfitsList::refreshList method.
2 Provided resetting selection in LLAccordionCtrl::removeCollapsibleCtrl method.
reviewed by Vadim Savchuk at https://codereview.productengine.com/secondlife/r/701/
--HG--
branch : product-engine
| -rw-r--r-- | indra/llui/llaccordionctrl.cpp | 6 | ||||
| -rw-r--r-- | indra/newview/lloutfitslist.cpp | 12 | 
2 files changed, 18 insertions, 0 deletions
| diff --git a/indra/llui/llaccordionctrl.cpp b/indra/llui/llaccordionctrl.cpp index 237d42090f..673631f99a 100644 --- a/indra/llui/llaccordionctrl.cpp +++ b/indra/llui/llaccordionctrl.cpp @@ -374,6 +374,12 @@ void LLAccordionCtrl::removeCollapsibleCtrl(LLView* view)  			break;  		}  	} + +	// if removed is selected - reset selection +	if (mSelectedTab == view) +	{ +		mSelectedTab = NULL; +	}  }  void	LLAccordionCtrl::initNoTabsWidget(const LLTextBox::Params& tb_params) diff --git a/indra/newview/lloutfitslist.cpp b/indra/newview/lloutfitslist.cpp index dddfd9106f..aba019356d 100644 --- a/indra/newview/lloutfitslist.cpp +++ b/indra/newview/lloutfitslist.cpp @@ -453,6 +453,12 @@ void LLOutfitsList::refreshList(const LLUUID& category_id)  		{  			// Remove accordion tab if category could not be added to observer.  			mAccordion->removeCollapsibleCtrl(tab); + +			// kill removed tab +			if (tab != NULL) +			{ +				tab->die(); +			}  			continue;  		} @@ -523,6 +529,12 @@ void LLOutfitsList::refreshList(const LLUUID& category_id)  			// 4. Remove outfit tab from accordion.  			mAccordion->removeCollapsibleCtrl(tab); + +			// kill removed tab +			if (tab != NULL) +			{ +				tab->die(); +			}  		}  	} | 
