rb_tree: reorganize code in rb_erase() for additional changes
First, move some code around in order to make the next change more obvious. [akpm@linux-foundation.org: coding-style fixes] Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl> Signed-off-by: Wolfram Strepp <wstrepp@gmx.de> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
130b76cf52
commit
16c047add3
18
lib/rbtree.c
18
lib/rbtree.c
|
@ -231,6 +231,15 @@ void rb_erase(struct rb_node *node, struct rb_root *root)
|
||||||
node = node->rb_right;
|
node = node->rb_right;
|
||||||
while ((left = node->rb_left) != NULL)
|
while ((left = node->rb_left) != NULL)
|
||||||
node = left;
|
node = left;
|
||||||
|
|
||||||
|
if (rb_parent(old)) {
|
||||||
|
if (rb_parent(old)->rb_left == old)
|
||||||
|
rb_parent(old)->rb_left = node;
|
||||||
|
else
|
||||||
|
rb_parent(old)->rb_right = node;
|
||||||
|
} else
|
||||||
|
root->rb_node = node;
|
||||||
|
|
||||||
child = node->rb_right;
|
child = node->rb_right;
|
||||||
parent = rb_parent(node);
|
parent = rb_parent(node);
|
||||||
color = rb_color(node);
|
color = rb_color(node);
|
||||||
|
@ -247,15 +256,6 @@ void rb_erase(struct rb_node *node, struct rb_root *root)
|
||||||
node->rb_right = old->rb_right;
|
node->rb_right = old->rb_right;
|
||||||
node->rb_left = old->rb_left;
|
node->rb_left = old->rb_left;
|
||||||
|
|
||||||
if (rb_parent(old))
|
|
||||||
{
|
|
||||||
if (rb_parent(old)->rb_left == old)
|
|
||||||
rb_parent(old)->rb_left = node;
|
|
||||||
else
|
|
||||||
rb_parent(old)->rb_right = node;
|
|
||||||
} else
|
|
||||||
root->rb_node = node;
|
|
||||||
|
|
||||||
rb_set_parent(old->rb_left, node);
|
rb_set_parent(old->rb_left, node);
|
||||||
if (old->rb_right)
|
if (old->rb_right)
|
||||||
rb_set_parent(old->rb_right, node);
|
rb_set_parent(old->rb_right, node);
|
||||||
|
|
Loading…
Reference in New Issue