diff options
author | Andrey Kleshchev <andreykproductengine@lindenlab.com> | 2024-08-19 22:59:48 +0300 |
---|---|---|
committer | Andrey Kleshchev <117672381+akleshchev@users.noreply.github.com> | 2024-08-20 09:20:52 +0300 |
commit | 342eee503865af8ee193a1d04f0bc80712c5d80c (patch) | |
tree | f6c2028c8ffc6a74812ac2c69ac477a64b1f3760 | |
parent | 169599fd2f211d66f80a54e13daf975229607022 (diff) |
SL-15061 Crash at LLConversationItemSession::clearAndDeparentModels #3
-rw-r--r-- | indra/newview/llfloaterimcontainer.cpp | 12 |
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) |