diff options
Diffstat (limited to 'indra')
| -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) | 
