triage#105 clearPopups() crash

onTopLost can result in popup being removed or potentially removing more
than one popup.
master
Andrey Kleshchev 2024-02-29 23:00:08 +02:00 committed by Andrey Kleshchev
parent eb01d6f770
commit d47c653682
1 changed files with 5 additions and 5 deletions

View File

@ -256,16 +256,16 @@ void LLPopupView::removePopup(LLView* popup)
void LLPopupView::clearPopups()
{
for (popup_list_t::iterator popup_it = mPopups.begin();
popup_it != mPopups.end();)
while (!mPopups.empty())
{
LLView* popup = popup_it->get();
popup_list_t::iterator popup_it = mPopups.begin();
LLView* popup = popup_it->get();
// Remove before notifying in case it will cause removePopup
mPopups.erase(popup_it);
if (popup)
{
popup->onTopLost();
}
popup_it = mPopups.erase(popup_it);
}
}