]> git.ipfire.org Git - people/ms/libloc.git/commitdiff
tree: Actually delete any deleted nodes
authorMichael Tremer <michael.tremer@ipfire.org>
Fri, 14 Jul 2023 16:37:42 +0000 (16:37 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Fri, 14 Jul 2023 16:37:42 +0000 (16:37 +0000)
Usually we only mark nodes as deleted, but finally, we should actually
delete what we can as we keep the pointers for back referencing.

Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/network.c

index cf47a9cb7b05357842bc358065ee047d79666294..d8aa10ef9e718aedaf6827ecbfd491b023e30c0c 100644 (file)
@@ -1002,7 +1002,7 @@ static int loc_network_tree_delete_node(struct loc_network_tree_node** node) {
 
        // Return for nodes that have already been deleted
        if (n->deleted)
-               return 1;
+               goto DELETE;
 
        // Delete zero
        if (n->zero) {
@@ -1026,8 +1026,10 @@ static int loc_network_tree_delete_node(struct loc_network_tree_node** node) {
        if (!r0 || !r1)
                return 0;
 
-       // If is safe to delete this node
-       n->deleted = 1;
+DELETE:
+       // It is now safe to delete the node
+       loc_network_tree_node_unref(n);
+       *node = NULL;
 
        return 1;
 }