From 0165d618a35df03a94ef0a53a0fbfe5f98b3462e Mon Sep 17 00:00:00 2001 From: Vsevolod Stakhov Date: Tue, 16 Sep 2014 18:29:02 +0100 Subject: [PATCH] Fix radix leaf nodes insertion. --- src/libutil/radix.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/libutil/radix.c b/src/libutil/radix.c index cd40c7905..29c32ab62 100644 --- a/src/libutil/radix.c +++ b/src/libutil/radix.c @@ -430,6 +430,7 @@ radix_uncompress_path (struct radix_compressed_node *node, node->skipped = FALSE; msg_debug ("uncompress %ud levels of tree", levels_uncompress); + while (levels_uncompress) { next = g_slice_alloc (sizeof (*node)); @@ -457,6 +458,7 @@ radix_uncompress_path (struct radix_compressed_node *node, } /* Attach leaf node */ + msg_debug ("attach leaf node with value %p", leaf->value); if (*nkey & bit) { node->d.n.right = leaf; node->d.n.left = NULL; @@ -490,6 +492,7 @@ radix_make_leaf_node (guint8 *key, gsize keylen, gsize masklen, memset (node, 0, sizeof (*node)); } node->value = value; + msg_debug ("insert new leaf node with value %p", value); return node; } @@ -532,6 +535,7 @@ radix_uncompress_node (struct radix_compressed_node *node, /* Nodes are equal */ uintptr_t oldval = node->value; node->value = value; + msg_debug ("replace leaf node with: %p, old value: %p", value, oldval); return oldval; } else { @@ -551,11 +555,12 @@ radix_uncompress_node (struct radix_compressed_node *node, * - otherwise we insert new compressed leaf node */ if (cur_level == target_level) { + msg_debug ("insert detached leaf node with value: %p", value); nnode->value = value; } else { - node = radix_make_leaf_node (key, keylen, value, - keylen - target_level / NBBY, TRUE); + node = radix_make_leaf_node (key, keylen, + keylen - target_level / NBBY, value, TRUE); if (nnode->d.n.left == NULL) { nnode->d.n.left = node; } @@ -586,6 +591,7 @@ radix_insert_compressed (radix_compressed_t * tree, node = tree->root; g_assert (keybits >= masklen); + msg_debug ("want insert value %p with mask %z", value, masklen); node = tree->root; prev = &tree->root; -- 2.39.5