diff options
author | Wolfram Strepp <wstrepp@gmx.de> | 2009-06-16 18:34:13 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-06-16 22:47:56 -0400 |
commit | 4b324126e0c6c3a5080ca3ec0981e8766ed6f1ee (patch) | |
tree | f49edd4acf4963eb3377fd3a700982081970ba14 /lib/rbtree.c | |
parent | 4c60117811171d867d4f27f17ea07d7419d45dae (diff) |
rb_tree: remove redundant if()-condition in rb_erase()
Furthermore, notice that the initial checks:
if (!node->rb_left)
child = node->rb_right;
else if (!node->rb_right)
child = node->rb_left;
else
{
...
}
guarantee that old->rb_right is set in the final else branch, therefore
we can omit checking that again.
Signed-off-by: Wolfram Strepp <wstrepp@gmx.de>
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'lib/rbtree.c')
-rw-r--r-- | lib/rbtree.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/lib/rbtree.c b/lib/rbtree.c index 4b4b29b4577d..e2aa3be29858 100644 --- a/lib/rbtree.c +++ b/lib/rbtree.c | |||
@@ -250,15 +250,15 @@ void rb_erase(struct rb_node *node, struct rb_root *root) | |||
250 | if (child) | 250 | if (child) |
251 | rb_set_parent(child, parent); | 251 | rb_set_parent(child, parent); |
252 | parent->rb_left = child; | 252 | parent->rb_left = child; |
253 | |||
254 | node->rb_right = old->rb_right; | ||
255 | rb_set_parent(old->rb_right, node); | ||
253 | } | 256 | } |
254 | 257 | ||
255 | node->rb_parent_color = old->rb_parent_color; | 258 | node->rb_parent_color = old->rb_parent_color; |
256 | node->rb_right = old->rb_right; | ||
257 | node->rb_left = old->rb_left; | 259 | node->rb_left = old->rb_left; |
258 | |||
259 | rb_set_parent(old->rb_left, node); | 260 | rb_set_parent(old->rb_left, node); |
260 | if (old->rb_right) | 261 | |
261 | rb_set_parent(old->rb_right, node); | ||
262 | goto color; | 262 | goto color; |
263 | } | 263 | } |
264 | 264 | ||