summaryrefslogtreecommitdiff
path: root/indra/newview/llconversationview.cpp
diff options
context:
space:
mode:
authorAndrey Kleshchev <andreykproductengine@lindenlab.com>2021-03-31 21:45:35 +0300
committerAndrey Kleshchev <andreykproductengine@lindenlab.com>2021-04-01 20:56:19 +0300
commit18323f019f51a0ca27470ec770232fc4618fcd4b (patch)
tree28aa7776d41eff0e8d40c0d26edae112060c5648 /indra/newview/llconversationview.cpp
parent6240168f24289517f9e84ac43076ca4f921c3e68 (diff)
SL-15061 Crash deleting non-zero reference in LLConversationItemSession
Diffstat (limited to 'indra/newview/llconversationview.cpp')
-rw-r--r--indra/newview/llconversationview.cpp9
1 files changed, 4 insertions, 5 deletions
diff --git a/indra/newview/llconversationview.cpp b/indra/newview/llconversationview.cpp
index 71346b4b43..df16868132 100644
--- a/indra/newview/llconversationview.cpp
+++ b/indra/newview/llconversationview.cpp
@@ -108,8 +108,7 @@ void LLConversationViewSession::destroyView()
// Chat can create and parent models(listeners) to session's model before creating
// coresponding views, such participant's models normally will wait for idle cycles
// but since we are deleting session and won't be processing any more events, make
- // sure unowned models are removed as well.
- // Might be good idea to just have an LLPointer list somewhere in LLConversationItemSession
+ // sure unowned LLConversationItemParticipant models are removed as well.
LLConversationItemSession* vmi = dynamic_cast<LLConversationItemSession*>(getViewModelItem());
@@ -146,9 +145,9 @@ void LLConversationViewSession::destroyView()
folderp->destroyView();
}
- // Now everything that is left in model(listener) is unowned,
- // it is safe to remove
- vmi->deleteParticipantModels();
+ // Now everything that is left in model(listener) is not owned by views,
+ // only by sessions, deparent so it won't point to soon to be dead model
+ vmi->clearAndDeparentModels();
}
LLFolderViewFolder::destroyView();