diff options
author | Andrey Kleshchev <andreykproductengine@lindenlab.com> | 2021-09-06 22:29:29 +0300 |
---|---|---|
committer | Andrey Kleshchev <andreykproductengine@lindenlab.com> | 2021-09-06 22:37:24 +0300 |
commit | a0a235784fe38dbccff3bfcdb5a4930f51e2b2d6 (patch) | |
tree | f4bb2515f9988186fb90d9ba484f894c6ce42ecc /indra | |
parent | b677b90c0abefa62be3ffbd5b5af2bc1b9935fac (diff) |
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.
Diffstat (limited to 'indra')
-rw-r--r-- | indra/newview/llfloaterimcontainer.cpp | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/indra/newview/llfloaterimcontainer.cpp b/indra/newview/llfloaterimcontainer.cpp index 9c84fa1991..6cd1648182 100644 --- a/indra/newview/llfloaterimcontainer.cpp +++ b/indra/newview/llfloaterimcontainer.cpp @@ -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(); |