From a03e1231486bd5c02e27b7020f53dfd2b397c215 Mon Sep 17 00:00:00 2001
From: Alexei Arabadji <aarabadji@productengine.com>
Date: Tue, 6 Jul 2010 17:00:39 +0300
Subject: [PATCH] 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
---
 indra/llui/llaccordionctrl.cpp  |  6 ++++++
 indra/newview/lloutfitslist.cpp | 12 ++++++++++++
 2 files changed, 18 insertions(+)

diff --git a/indra/llui/llaccordionctrl.cpp b/indra/llui/llaccordionctrl.cpp
index 237d42090ff..673631f99ad 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 dddfd9106f6..aba019356d8 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();
+			}
 		}
 	}
 
-- 
GitLab