Fix for a crash on startup/shutdown introduced in the tip of viewer-2-0 very recently.
list.erase(list.find()) is not safe, because erasing list.end() is undefined. Check to make sure the find succeeded before doing the erase. Reviewed by Richard at http://codereview.lindenlab.com/341001master
parent
9412447b4f
commit
eee50d1401
|
|
@ -207,7 +207,11 @@ void LLPopupView::addPopup(LLView* popup)
|
|||
{
|
||||
if (popup)
|
||||
{
|
||||
mPopups.erase(std::find(mPopups.begin(), mPopups.end(), popup->getHandle()));
|
||||
popup_list_t::iterator iter = std::find(mPopups.begin(), mPopups.end(), popup->getHandle());
|
||||
if(iter != mPopups.end())
|
||||
{
|
||||
mPopups.erase(iter);
|
||||
}
|
||||
mPopups.push_front(popup->getHandle());
|
||||
}
|
||||
}
|
||||
|
|
@ -220,7 +224,11 @@ void LLPopupView::removePopup(LLView* popup)
|
|||
{
|
||||
gFocusMgr.setKeyboardFocus(NULL);
|
||||
}
|
||||
mPopups.erase(std::find(mPopups.begin(), mPopups.end(), popup->getHandle()));
|
||||
popup_list_t::iterator iter = std::find(mPopups.begin(), mPopups.end(), popup->getHandle());
|
||||
if(iter != mPopups.end())
|
||||
{
|
||||
mPopups.erase(iter);
|
||||
}
|
||||
popup->onTopLost();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue