Archived
1
0
Fork 0

rbtree.c: search: return key instead of node.

This commit is contained in:
Henrik Hautakoski 2010-12-27 15:14:20 +01:00
parent 027bf154a7
commit 3671888b8b
3 changed files with 6 additions and 8 deletions

View file

@ -86,7 +86,7 @@ inline int rbtree_is_empty(rbtree *tree) {
/*
* Searches a tree by key.
*/
rbnode* rbtree_search(rbtree *tree, const void *key) {
void* rbtree_search(rbtree *tree, const void *key) {
rbnode *n;
@ -99,12 +99,11 @@ rbnode* rbtree_search(rbtree *tree, const void *key) {
int cmp = tree->cmp_fn(n->key, key);
if (cmp == 0)
break;
return (void *) n->key;
n = n->child[cmp < 0];
}
return n;
return NULL;
}
void rbtree_walk(rbtree *tree, void (*action)(rbnode *)) {

View file

@ -35,7 +35,7 @@ typedef struct {
int rbtree_is_empty(rbtree *tree);
rbnode* rbtree_search(rbtree *tree, const void *key);
void* rbtree_search(rbtree *tree, const void *key);
void rbtree_walk(rbtree *tree, void (*action)(rbnode *));

View file

@ -150,7 +150,7 @@ void test_search() {
int index;
rbnode *n;
int *n;
do
index = rand() % NODES;
@ -162,8 +162,7 @@ void test_search() {
n = rbtree_search(&tree, &keyref[index]);
rb_assert(tree.root);
assert(n != NULL);
assert(n->key == &keyref[index]);
assert(n == &keyref[index]);
index = MAX_VAL + 512;