SL-15950 Crash at selectConversationPair

According to callstack data, new_selection was somehow 0x0002 which is invalid.
According to logs, session was just deleted, right before opening floater to some other session by arriving message, likely to the removed one.
master
Andrey Kleshchev 2021-09-06 22:29:29 +03:00
parent b677b90c0a
commit a0a235784f
1 changed files with 9 additions and 6 deletions

View File

@ -1686,7 +1686,7 @@ BOOL LLFloaterIMContainer::selectConversationPair(const LLUUID& session_id, bool
/* floater processing */
if (NULL != session_floater)
if (NULL != session_floater && !session_floater->isDead())
{
if (session_id != getSelectedSession())
{
@ -1858,11 +1858,14 @@ bool LLFloaterIMContainer::removeConversationListItem(const LLUUID& uuid, bool c
if (widget)
{
is_widget_selected = widget->isSelected();
new_selection = mConversationsRoot->getNextFromChild(widget, FALSE);
if (!new_selection)
{
new_selection = mConversationsRoot->getPreviousFromChild(widget, FALSE);
}
if (mConversationsRoot)
{
new_selection = mConversationsRoot->getNextFromChild(widget, FALSE);
if (!new_selection)
{
new_selection = mConversationsRoot->getPreviousFromChild(widget, FALSE);
}
}
// Will destroy views and delete models that are not assigned to any views
widget->destroyView();