From b4ee80b91bfa1bdc427aaf5f5821e2a5590e21f4 Mon Sep 17 00:00:00 2001 From: AndreyL ProductEngine Date: Tue, 23 Aug 2016 17:58:36 +0300 Subject: MAINT-6511 Crash in LLFloaterView::restoreAll - exception handling --- indra/llui/llfloater.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'indra/llui/llfloater.cpp') diff --git a/indra/llui/llfloater.cpp b/indra/llui/llfloater.cpp index 1f9869fadc..b3048a9b16 100644 --- a/indra/llui/llfloater.cpp +++ b/indra/llui/llfloater.cpp @@ -2320,7 +2320,17 @@ void LLFloaterView::restoreAll() // make sure all subwindows aren't minimized for ( child_list_const_iter_t child_it = getChildList()->begin(); child_it != getChildList()->end(); ++child_it) { - LLFloater* floaterp = dynamic_cast(*child_it); + LLFloater* floaterp = nullptr; + try + { + floaterp = dynamic_cast(*child_it); + } + catch (std::exception e) // See MAINT-6511 + { + LL_WARNS() << "Caught exception: " << e.what() << LL_ENDL; + continue; + } + if (floaterp) { floaterp->setMinimized(FALSE); -- cgit v1.2.3 From 7ea2f091a69794ce4aa121968175f69d88f0e644 Mon Sep 17 00:00:00 2001 From: AndreyL ProductEngine Date: Thu, 25 Aug 2016 17:33:54 +0300 Subject: MAINT-6511 Buildfix --- indra/llui/llfloater.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'indra/llui/llfloater.cpp') diff --git a/indra/llui/llfloater.cpp b/indra/llui/llfloater.cpp index b3048a9b16..93ee1ceee3 100644 --- a/indra/llui/llfloater.cpp +++ b/indra/llui/llfloater.cpp @@ -2320,7 +2320,7 @@ void LLFloaterView::restoreAll() // make sure all subwindows aren't minimized for ( child_list_const_iter_t child_it = getChildList()->begin(); child_it != getChildList()->end(); ++child_it) { - LLFloater* floaterp = nullptr; + LLFloater* floaterp = NULL; try { floaterp = dynamic_cast(*child_it); -- cgit v1.2.3 From 9e73d04811f65006198297f527d38f1c6262bdce Mon Sep 17 00:00:00 2001 From: andreykproductengine Date: Fri, 2 Sep 2016 19:20:31 +0300 Subject: MAINT-6461 crash due to invalid menu pointer during visibility change --- indra/llui/llfloater.cpp | 15 +++------------ 1 file changed, 3 insertions(+), 12 deletions(-) (limited to 'indra/llui/llfloater.cpp') diff --git a/indra/llui/llfloater.cpp b/indra/llui/llfloater.cpp index 93ee1ceee3..4f664a1ccc 100644 --- a/indra/llui/llfloater.cpp +++ b/indra/llui/llfloater.cpp @@ -2318,19 +2318,10 @@ void LLFloaterView::reshape(S32 width, S32 height, BOOL called_from_parent) void LLFloaterView::restoreAll() { // make sure all subwindows aren't minimized - for ( child_list_const_iter_t child_it = getChildList()->begin(); child_it != getChildList()->end(); ++child_it) + child_list_t child_list = *(getChildList()); + for (child_list_const_iter_t child_it = child_list.begin(); child_it != child_list.end(); ++child_it) { - LLFloater* floaterp = NULL; - try - { - floaterp = dynamic_cast(*child_it); - } - catch (std::exception e) // See MAINT-6511 - { - LL_WARNS() << "Caught exception: " << e.what() << LL_ENDL; - continue; - } - + LLFloater* floaterp = dynamic_cast(*child_it); if (floaterp) { floaterp->setMinimized(FALSE); -- cgit v1.2.3