]> git.ipfire.org Git - thirdparty/bird.git/commitdiff
Extend remove_node() with deleting root node
authorIgor Putovny <igor.putovny@nic.cz>
Thu, 21 Sep 2023 11:33:17 +0000 (13:33 +0200)
committerIgor Putovny <igor.putovny@nic.cz>
Thu, 21 Sep 2023 11:49:59 +0000 (13:49 +0200)
proto/aggregator/aggregator.c

index 2065f9510811a9ece3d446427bb96b979f95cab1..d0b8124ef8c5c5ff13a64af9fd7b6fe60ca8641c 100644 (file)
@@ -95,9 +95,11 @@ static void
 remove_node(struct trie_node *node)
 {
   assert(node != NULL);
-  assert(node->parent != NULL);
   assert(node->child[0] == NULL && node->child[1] == NULL);
 
+  if (node->parent == NULL)
+    goto free_node;
+
   if (node->parent->child[0] == node)
     node->parent->child[0] = NULL;
   else if (node->parent->child[1] == node)
@@ -105,7 +107,8 @@ remove_node(struct trie_node *node)
   else
     bug("Invalid child pointer");
 
-  sl_free(node);
+  free_node:
+    sl_free(node);
 }
 
 static void