From 6dec98a14ca052a3600556815e6b215eed15e97d Mon Sep 17 00:00:00 2001
From: Andrey Kleshchev <andreykproductengine@lindenlab.com>
Date: Tue, 24 Jan 2023 21:51:24 +0200
Subject: [PATCH] SL-17425 Crash when having more than one dependent floater #2

---
 indra/llui/llfloater.cpp | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/indra/llui/llfloater.cpp b/indra/llui/llfloater.cpp
index d413fab2700..2303cd24b7c 100644
--- a/indra/llui/llfloater.cpp
+++ b/indra/llui/llfloater.cpp
@@ -759,11 +759,13 @@ void LLFloater::closeFloater(bool app_quitting)
         }
 
 		// now close dependent floater
-		for(handle_set_iter_t dependent_it = mDependents.begin();
-			dependent_it != mDependents.end(); )
+		while(mDependents.size() > 0)
 		{
+            handle_set_iter_t dependent_it = mDependents.begin();
 			LLFloater* floaterp = dependent_it->get();
-            dependent_it = mDependents.erase(dependent_it);
+            // normally removeDependentFloater will do this, but in
+            // case floaterp is somehow invalid or orphaned, erase now
+            mDependents.erase(dependent_it);
             if (floaterp)
             {
                 floaterp->mDependeeHandle = LLHandle<LLFloater>();
-- 
GitLab