From 6dec98a14ca052a3600556815e6b215eed15e97d Mon Sep 17 00:00:00 2001 From: Andrey Kleshchev Date: Tue, 24 Jan 2023 21:51:24 +0200 Subject: SL-17425 Crash when having more than one dependent floater #2 --- indra/llui/llfloater.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'indra/llui/llfloater.cpp') diff --git a/indra/llui/llfloater.cpp b/indra/llui/llfloater.cpp index d413fab270..2303cd24b7 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(); -- cgit v1.2.3