From d5ff39d3e3586163f7581f36c3217b1d4c617033 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Fri, 14 Jul 2023 16:37:42 +0000 Subject: [PATCH] tree: Actually delete any deleted nodes 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 --- src/network.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/network.c b/src/network.c index cf47a9c..d8aa10e 100644 --- a/src/network.c +++ b/src/network.c @@ -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; } -- 2.47.3