From 246ea7854e46194d8cfc5329eb396f0e74ed389d Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Tue, 28 Dec 2010 18:29:06 +0100 Subject: [PATCH] rbtree.c: fixed bug with tree not being empty when removing root node. --- src/rbtree.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/rbtree.c b/src/rbtree.c index d253ea6..3c3e66f 100644 --- a/src/rbtree.c +++ b/src/rbtree.c @@ -262,11 +262,7 @@ int rbtree_delete(rbtree *tree, const void *key) { } } } - - tree->root = head.child[1]; - if (tree->root) - tree->root->color = RB_BLACK; - + /* remove if found */ if (f) { if (tree->delete_fn) @@ -276,7 +272,11 @@ int rbtree_delete(rbtree *tree, const void *key) { f->key = q->key; swap(p, 1, q) = swap(q, 0, NULL); xfree(q); - return 1; } - return 0; + + tree->root = head.child[1]; + if (tree->root) + tree->root->color = RB_BLACK; + + return f != NULL; }