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:
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user