summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrey Kleshchev <andreykproductengine@lindenlab.com>2024-08-19 22:59:48 +0300
committerAndrey Kleshchev <117672381+akleshchev@users.noreply.github.com>2024-08-20 09:20:52 +0300
commit342eee503865af8ee193a1d04f0bc80712c5d80c (patch)
treef6c2028c8ffc6a74812ac2c69ac477a64b1f3760
parent169599fd2f211d66f80a54e13daf975229607022 (diff)
SL-15061 Crash at LLConversationItemSession::clearAndDeparentModels #3
-rw-r--r--indra/newview/llfloaterimcontainer.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/indra/newview/llfloaterimcontainer.cpp b/indra/newview/llfloaterimcontainer.cpp
index 08e13276b3..f43f403755 100644
--- a/indra/newview/llfloaterimcontainer.cpp
+++ b/indra/newview/llfloaterimcontainer.cpp
@@ -112,6 +112,18 @@ LLFloaterIMContainer::~LLFloaterIMContainer()
{
LLIMMgr::getInstance()->removeSessionObserver(this);
}
+
+ for (auto& session : mConversationsItems)
+ {
+ LLConversationItemSession* session_model = dynamic_cast<LLConversationItemSession*>(session.second.get());
+ if (session_model)
+ {
+ // Models have overcomplicated double ownership, clear
+ // and resolve '0 references' ownership now, before owned
+ // part of the models gets deleted by their owners
+ session_model->clearAndDeparentModels();
+ }
+ }
}
void LLFloaterIMContainer::sessionAdded(const LLUUID& session_id, const std::string& name, const LLUUID& other_participant_id, bool has_offline_msg)