summaryrefslogtreecommitdiff
path: root/indra
diff options
context:
space:
mode:
authorAndrey Kleshchev <andreykproductengine@lindenlab.com>2021-09-06 22:29:29 +0300
committerAndrey Kleshchev <andreykproductengine@lindenlab.com>2021-09-06 22:37:24 +0300
commita0a235784fe38dbccff3bfcdb5a4930f51e2b2d6 (patch)
treef4bb2515f9988186fb90d9ba484f894c6ce42ecc /indra
parentb677b90c0abefa62be3ffbd5b5af2bc1b9935fac (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.cpp15
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();