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.
This commit is contained in:
Rene Gollent
2012-11-30 21:15:57 -05:00
parent f4621a90de
commit ea788ed9cb
@@ -1036,7 +1036,7 @@ VariablesView::VariableTableModel::ValueNodeChildrenDeleted(ValueNode* node)
BReference<ModelNode> 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<ModelNode> modelNodeReference(node, true);
_RequestNodeValue(node);
}
break;
}