From a0a235784fe38dbccff3bfcdb5a4930f51e2b2d6 Mon Sep 17 00:00:00 2001 From: Andrey Kleshchev Date: Mon, 6 Sep 2021 22:29:29 +0300 Subject: 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. --- indra/newview/llfloaterimcontainer.cpp | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) (limited to 'indra/newview/llfloaterimcontainer.cpp') 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(); -- cgit v1.2.3