From 207a59c80f601feb60f74ed541cb35ac74f6b193 Mon Sep 17 00:00:00 2001 From: Richard Braun Date: Fri, 7 Jun 2013 20:44:19 +0200 Subject: rdxtree: encode pointer type in entry address Entry addresses are odd if they refer to an internal tree node. This change is required for the upcoming lockless concurrent code. --- test/test_rdxtree.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) (limited to 'test') diff --git a/test/test_rdxtree.c b/test/test_rdxtree.c index ead3aa3..be375bf 100644 --- a/test/test_rdxtree.c +++ b/test/test_rdxtree.c @@ -100,6 +100,7 @@ print_values(struct rdxtree_node *node, size_t index, size_t level) static void print_node(struct rdxtree_node *node, int height, size_t index, size_t level) { + void *entry; size_t i; for (i = level; i > 0; i--) @@ -107,8 +108,10 @@ print_node(struct rdxtree_node *node, int height, size_t index, size_t level) printf("%zu:n (bm: " BM_FORMAT ")\n", index, node->alloc_bm); - for (i = 0; i < ARRAY_SIZE(node->entries); i++) - print_subtree(node->entries[i], height - 1, i, level + 1); + for (i = 0; i < ARRAY_SIZE(node->entries); i++) { + entry = rdxtree_entry_addr(node->entries[i]); + print_subtree(entry, height - 1, i, level + 1); + } } static void @@ -126,10 +129,14 @@ print_subtree(struct rdxtree_node *node, int height, size_t index, size_t level) static void print_tree(struct rdxtree *tree) { + void *root; + + root = rdxtree_entry_addr(tree->root); + if (tree->height == 0) - print_value(tree->root, 0, 0); + print_value(root, 0, 0); else - print_subtree(tree->root, tree->height, 0, 0); + print_subtree(root, tree->height, 0, 0); } static void -- cgit v1.2.3