Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 332393
b: refs/heads/master
c: e125d14
h: refs/heads/master
i:
  332391: 7966a2f
v: v3
  • Loading branch information
Michel Lespinasse authored and Linus Torvalds committed Oct 9, 2012
1 parent 6510945 commit 422fd5d
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 39 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: d6ff1273928ebf15466a85b7e1810cd00e72998b
refs/heads/master: e125d1471a4f8f1bf7ea9a83deb8d23cb40bd712
68 changes: 30 additions & 38 deletions trunk/lib/rbtree.c
Original file line number Diff line number Diff line change
Expand Up @@ -283,28 +283,24 @@ static void __rb_erase_color(struct rb_node *node, struct rb_node *parent,
__rb_rotate_left(parent, root);
other = parent->rb_right;
}
if ((!other->rb_left || rb_is_black(other->rb_left)) &&
(!other->rb_right || rb_is_black(other->rb_right)))
{
rb_set_red(other);
node = parent;
parent = rb_parent(node);
}
else
{
if (!other->rb_right || rb_is_black(other->rb_right))
{
rb_set_black(other->rb_left);
if (!other->rb_right || rb_is_black(other->rb_right)) {
if (!other->rb_left ||
rb_is_black(other->rb_left)) {
rb_set_red(other);
__rb_rotate_right(other, root);
other = parent->rb_right;
node = parent;
parent = rb_parent(node);
continue;
}
rb_set_color(other, rb_color(parent));
rb_set_black(parent);
rb_set_black(other->rb_right);
__rb_rotate_left(parent, root);
break;
rb_set_black(other->rb_left);
rb_set_red(other);
__rb_rotate_right(other, root);
other = parent->rb_right;
}
rb_set_color(other, rb_color(parent));
rb_set_black(parent);
rb_set_black(other->rb_right);
__rb_rotate_left(parent, root);
break;
} else {
other = parent->rb_left;
if (rb_is_red(other))
Expand All @@ -314,28 +310,24 @@ static void __rb_erase_color(struct rb_node *node, struct rb_node *parent,
__rb_rotate_right(parent, root);
other = parent->rb_left;
}
if ((!other->rb_left || rb_is_black(other->rb_left)) &&
(!other->rb_right || rb_is_black(other->rb_right)))
{
rb_set_red(other);
node = parent;
parent = rb_parent(node);
}
else
{
if (!other->rb_left || rb_is_black(other->rb_left))
{
rb_set_black(other->rb_right);
if (!other->rb_left || rb_is_black(other->rb_left)) {
if (!other->rb_right ||
rb_is_black(other->rb_right)) {
rb_set_red(other);
__rb_rotate_left(other, root);
other = parent->rb_left;
node = parent;
parent = rb_parent(node);
continue;
}
rb_set_color(other, rb_color(parent));
rb_set_black(parent);
rb_set_black(other->rb_left);
__rb_rotate_right(parent, root);
break;
rb_set_black(other->rb_right);
rb_set_red(other);
__rb_rotate_left(other, root);
other = parent->rb_left;
}
rb_set_color(other, rb_color(parent));
rb_set_black(parent);
rb_set_black(other->rb_left);
__rb_rotate_right(parent, root);
break;
}
}
}
Expand Down

0 comments on commit 422fd5d

Please sign in to comment.