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 | |
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.
-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(); |