From: Yuri Schaeffer Date: Mon, 14 Oct 2013 08:09:25 +0000 (+0000) Subject: in hindsight, count nodes, not elements X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=520a0af95fe7f901a71f21e2acfe7fc1d855f7b4;p=thirdparty%2Funbound.git in hindsight, count nodes, not elements git-svn-id: file:///svn/unbound/branches/edns-subnet@2980 be551aaa-1e26-0410-a405-d3ace91eadb9 --- diff --git a/edns-subnet/addrtree.c b/edns-subnet/addrtree.c index e2ddb9e7c..a13a88e39 100644 --- a/edns-subnet/addrtree.c +++ b/edns-subnet/addrtree.c @@ -63,7 +63,7 @@ node_create(struct addrtree *tree, void* elem, addrlen_t scope, if (!node) return NULL; node->elem = elem; - if (elem) tree->elem_count++; + tree->node_count++; node->scope = scope; node->ttl = ttl; node->edge[0] = NULL; @@ -94,7 +94,7 @@ struct addrtree* addrtree_create(addrlen_t max_depth, tree->delfunc = delfunc; tree->sizefunc = sizefunc; tree->env = env; - tree->elem_count = 0; + tree->node_count = 0; return tree; } @@ -177,7 +177,6 @@ clean_node(struct addrtree* tree, struct addrnode* node) if (!node->elem) return; tree->delfunc(tree->env, node->elem); node->elem = NULL; - tree->elem_count--; } /** @@ -314,7 +313,6 @@ addrtree_insert(struct addrtree *tree, const addrkey_t *addr, if (depth == sourcemask) { /* update this node's scope and data */ clean_node(tree, node); - tree->elem_count++; node->elem = elem; node->scope = scope; return; diff --git a/edns-subnet/addrtree.h b/edns-subnet/addrtree.h index eeafaf42f..8a3969b0e 100644 --- a/edns-subnet/addrtree.h +++ b/edns-subnet/addrtree.h @@ -40,7 +40,7 @@ struct addrtree { struct addrnode* root; /** Number of elements in the tree (not always equal to number of * nodes) */ - unsigned int elem_count; + unsigned int node_count; /** Maximum prefix length we are willing to cache. */ addrlen_t max_depth; /** External function to delete elem. Called as @@ -102,7 +102,7 @@ size_t addrtree_size(const struct addrtree* tree); */ struct addrtree* addrtree_create(addrlen_t max_depth, void (*delfunc)(void *, void *), - size_t (*sizefunc)(void *), void *env, int max_elem_count); + size_t (*sizefunc)(void *), void *env); /** * Free tree and all nodes below diff --git a/testcode/unitvandergaast.c b/testcode/unitvandergaast.c index 32df27c4e..875467eae 100644 --- a/testcode/unitvandergaast.c +++ b/testcode/unitvandergaast.c @@ -166,7 +166,7 @@ static void consistency_test(void) srand(9195); /* just some value for reproducibility */ t = addrtree_create(100, &elemfree, NULL, &env); - count = t->elem_count; + count = t->node_count; unit_assert(count == 0); for (i = 0; i < 1000; i++) { l = randomkey(&k, 128); @@ -174,15 +174,15 @@ static void consistency_test(void) addrtree_insert(t, k, l, 64, elem, timenow + 10, timenow); /* This should always hold because no items ever expire. They * could be overwritten, though. */ - unit_assert( count <= t->elem_count ); - count = t->elem_count; + unit_assert( count <= t->node_count ); + count = t->node_count; free(k); unit_assert( !addrtree_inconsistent(t) ); } addrtree_delete(t); unit_show_func("edns-subnet/addrtree.h", "Tree consistency with purge"); t = addrtree_create(8, &elemfree, NULL, &env); - unit_assert(t->elem_count == 0); + unit_assert(t->node_count == 0); for (i = 0; i < 1000; i++) { l = randomkey(&k, 128); elem = (struct reply_info *) calloc(1, sizeof(struct reply_info));