summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSylvain Munaut <tnt@246tNt.com>2011-11-11 15:31:01 +0100
committerHarald Welte <laforge@gnumonks.org>2011-11-12 23:23:35 +0100
commit54187ba442e16df7346acc8ba68f80ce3239e6b0 (patch)
treecff5142aadc16fc51ed9f748dcd9e89bbe531f90
parenta83cbe12f83d81d4b4167193fe85b1e3d745dc94 (diff)
core/rbtree: remove redundant if()-condition in rb_erase()
See kernel commit 4b324126e0c6c3a5080ca3ec0981e8766ed6f1ee ---- 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> ---- Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
-rw-r--r--src/rbtree.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/rbtree.c b/src/rbtree.c
index afbdca6..4e7c0f3 100644
--- a/src/rbtree.c
+++ b/src/rbtree.c
@@ -248,15 +248,15 @@ void rb_erase(struct rb_node *node, struct rb_root *root)
if (child)
rb_set_parent(child, parent);
parent->rb_left = child;
+
+ node->rb_right = old->rb_right;
+ rb_set_parent(old->rb_right, node);
}
node->rb_parent_color = old->rb_parent_color;
- node->rb_right = old->rb_right;
node->rb_left = old->rb_left;
-
rb_set_parent(old->rb_left, node);
- if (old->rb_right)
- rb_set_parent(old->rb_right, node);
+
goto color;
}