summaryrefslogtreecommitdiff
path: root/indra/newview/llpopupview.cpp
diff options
context:
space:
mode:
authorAndrey Kleshchev <andreykproductengine@lindenlab.com>2024-01-30 01:50:15 +0200
committerAndrey Kleshchev <117672381+akleshchev@users.noreply.github.com>2024-01-30 17:54:37 +0200
commitd3448fa204a648d61d07f12ecc982841160380d2 (patch)
treedfa7f6e7ab2220c179bfb3bb6faed842b592ca7d /indra/newview/llpopupview.cpp
parente0c604c5f66e00aaa40ba6a418ff28a4a60af0b8 (diff)
BugSplat Crash #1409959 onTopLost
onTopLost crashed 1. It contradicts callstack, but clearPopups() definetely has an issue due to not checking the pointer prior to calling onTopLost 2. According to callstack, crash happened around ~LLFolderViewFolder and while it does call removePopup for itself, it isn't a popup, the only one in the list would be the renamer, which calls back to parent, so made sure to secure it. 3. mFlashTimer was never deleted 4. Some explicit cleanup for TopLost
Diffstat (limited to 'indra/newview/llpopupview.cpp')
-rw-r--r--indra/newview/llpopupview.cpp10
1 files changed, 5 insertions, 5 deletions
diff --git a/indra/newview/llpopupview.cpp b/indra/newview/llpopupview.cpp
index d1a9ca229f..49645eec11 100644
--- a/indra/newview/llpopupview.cpp
+++ b/indra/newview/llpopupview.cpp
@@ -260,12 +260,12 @@ void LLPopupView::clearPopups()
popup_it != mPopups.end();)
{
LLView* popup = popup_it->get();
+ if (popup)
+ {
+ popup->onTopLost();
+ }
- popup_list_t::iterator cur_popup_it = popup_it;
- ++popup_it;
-
- mPopups.erase(cur_popup_it);
- popup->onTopLost();
+ popup_it = mPopups.erase(popup_it);
}
}