From ea788ed9cb3a9c5dfef12516c1a6c5f15b08e2ad Mon Sep 17 00:00:00 2001 From: Rene Gollent Date: Fri, 30 Nov 2012 21:15:57 -0500 Subject: [PATCH] Correction to previous leak fix. - The actual reason the hidden node wasn't being released as expected was that ContainerListener::ModelNodeHidden() added a reference on behalf of its indirect target, while the latter never actually took ownership of said reference. --- .../user_interface/gui/team_window/VariablesView.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/apps/debugger/user_interface/gui/team_window/VariablesView.cpp b/src/apps/debugger/user_interface/gui/team_window/VariablesView.cpp index 4093506812b..8bf73631d22 100644 --- a/src/apps/debugger/user_interface/gui/team_window/VariablesView.cpp +++ b/src/apps/debugger/user_interface/gui/team_window/VariablesView.cpp @@ -1036,7 +1036,7 @@ VariablesView::VariableTableModel::ValueNodeChildrenDeleted(ValueNode* node) BReference hiddenChild; if (modelNode->CountChildren() == 1 && modelNode->ChildAt(0)->IsHidden()) { - hiddenChild.SetTo(modelNode->ChildAt(0), true); + hiddenChild.SetTo(modelNode->ChildAt(0)); modelNode->RemoveChild(hiddenChild); modelNode = hiddenChild; fNodeTable.Remove(hiddenChild); @@ -1788,8 +1788,10 @@ VariablesView::MessageReceived(BMessage* message) case MSG_MODEL_NODE_HIDDEN: { ModelNode* node; - if (message->FindPointer("node", (void**)&node) == B_OK) + if (message->FindPointer("node", (void**)&node) == B_OK) { + BReference modelNodeReference(node, true); _RequestNodeValue(node); + } break; }