X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=lib%2Frbtree.c;h=14b791ac5089727c8430590e63d511201492bb56;hb=c7b5ebbddf7bcd3651947760f423e3783bbe6573;hp=860115d49dd3a6ddeb017ed7f9ad814b9f843e3a;hpb=5273a3df6485dc2ad6aa7ddd441b9a21970f003b;p=linux-2.6.git diff --git a/lib/rbtree.c b/lib/rbtree.c index 860115d49..14b791ac5 100644 --- a/lib/rbtree.c +++ b/lib/rbtree.c @@ -235,7 +235,7 @@ void rb_erase(struct rb_node *node, struct rb_root *root) struct rb_node *old = node, *left; node = node->rb_right; - while ((left = node->rb_left)) + while ((left = node->rb_left) != NULL) node = left; child = node->rb_right; parent = node->rb_parent; @@ -305,13 +305,26 @@ struct rb_node *rb_first(struct rb_root *root) n = root->rb_node; if (!n) - return 0; + return NULL; while (n->rb_left) n = n->rb_left; return n; } EXPORT_SYMBOL(rb_first); +struct rb_node *rb_last(struct rb_root *root) +{ + struct rb_node *n; + + n = root->rb_node; + if (!n) + return NULL; + while (n->rb_right) + n = n->rb_right; + return n; +} +EXPORT_SYMBOL(rb_last); + struct rb_node *rb_next(struct rb_node *node) { /* If we have a right-hand child, go down and then left as far