diff options
-rw-r--r-- | lib/rbtree.c | 42 |
1 files changed, 23 insertions, 19 deletions
diff --git a/lib/rbtree.c b/lib/rbtree.c index a38e473d8fe7..08926709b4f9 100644 --- a/lib/rbtree.c +++ b/lib/rbtree.c | |||
@@ -363,8 +363,7 @@ void rb_erase(struct rb_node *node, struct rb_root *root) | |||
363 | child = node->rb_right; | 363 | child = node->rb_right; |
364 | else if (!node->rb_right) | 364 | else if (!node->rb_right) |
365 | child = node->rb_left; | 365 | child = node->rb_left; |
366 | else | 366 | else { |
367 | { | ||
368 | struct rb_node *old = node, *left; | 367 | struct rb_node *old = node, *left; |
369 | 368 | ||
370 | node = node->rb_right; | 369 | node = node->rb_right; |
@@ -406,17 +405,15 @@ void rb_erase(struct rb_node *node, struct rb_root *root) | |||
406 | 405 | ||
407 | if (child) | 406 | if (child) |
408 | rb_set_parent(child, parent); | 407 | rb_set_parent(child, parent); |
409 | if (parent) | 408 | if (parent) { |
410 | { | ||
411 | if (parent->rb_left == node) | 409 | if (parent->rb_left == node) |
412 | parent->rb_left = child; | 410 | parent->rb_left = child; |
413 | else | 411 | else |
414 | parent->rb_right = child; | 412 | parent->rb_right = child; |
415 | } | 413 | } else |
416 | else | ||
417 | root->rb_node = child; | 414 | root->rb_node = child; |
418 | 415 | ||
419 | color: | 416 | color: |
420 | if (color == RB_BLACK) | 417 | if (color == RB_BLACK) |
421 | __rb_erase_color(child, parent, root); | 418 | __rb_erase_color(child, parent, root); |
422 | } | 419 | } |
@@ -529,8 +526,10 @@ struct rb_node *rb_next(const struct rb_node *node) | |||
529 | if (RB_EMPTY_NODE(node)) | 526 | if (RB_EMPTY_NODE(node)) |
530 | return NULL; | 527 | return NULL; |
531 | 528 | ||
532 | /* If we have a right-hand child, go down and then left as far | 529 | /* |
533 | as we can. */ | 530 | * If we have a right-hand child, go down and then left as far |
531 | * as we can. | ||
532 | */ | ||
534 | if (node->rb_right) { | 533 | if (node->rb_right) { |
535 | node = node->rb_right; | 534 | node = node->rb_right; |
536 | while (node->rb_left) | 535 | while (node->rb_left) |
@@ -538,12 +537,13 @@ struct rb_node *rb_next(const struct rb_node *node) | |||
538 | return (struct rb_node *)node; | 537 | return (struct rb_node *)node; |
539 | } | 538 | } |
540 | 539 | ||
541 | /* No right-hand children. Everything down and left is | 540 | /* |
542 | smaller than us, so any 'next' node must be in the general | 541 | * No right-hand children. Everything down and left is smaller than us, |
543 | direction of our parent. Go up the tree; any time the | 542 | * so any 'next' node must be in the general direction of our parent. |
544 | ancestor is a right-hand child of its parent, keep going | 543 | * Go up the tree; any time the ancestor is a right-hand child of its |
545 | up. First time it's a left-hand child of its parent, said | 544 | * parent, keep going up. First time it's a left-hand child of its |
546 | parent is our 'next' node. */ | 545 | * parent, said parent is our 'next' node. |
546 | */ | ||
547 | while ((parent = rb_parent(node)) && node == parent->rb_right) | 547 | while ((parent = rb_parent(node)) && node == parent->rb_right) |
548 | node = parent; | 548 | node = parent; |
549 | 549 | ||
@@ -558,8 +558,10 @@ struct rb_node *rb_prev(const struct rb_node *node) | |||
558 | if (RB_EMPTY_NODE(node)) | 558 | if (RB_EMPTY_NODE(node)) |
559 | return NULL; | 559 | return NULL; |
560 | 560 | ||
561 | /* If we have a left-hand child, go down and then right as far | 561 | /* |
562 | as we can. */ | 562 | * If we have a left-hand child, go down and then right as far |
563 | * as we can. | ||
564 | */ | ||
563 | if (node->rb_left) { | 565 | if (node->rb_left) { |
564 | node = node->rb_left; | 566 | node = node->rb_left; |
565 | while (node->rb_right) | 567 | while (node->rb_right) |
@@ -567,8 +569,10 @@ struct rb_node *rb_prev(const struct rb_node *node) | |||
567 | return (struct rb_node *)node; | 569 | return (struct rb_node *)node; |
568 | } | 570 | } |
569 | 571 | ||
570 | /* No left-hand children. Go up till we find an ancestor which | 572 | /* |
571 | is a right-hand child of its parent */ | 573 | * No left-hand children. Go up till we find an ancestor which |
574 | * is a right-hand child of its parent. | ||
575 | */ | ||
572 | while ((parent = rb_parent(node)) && node == parent->rb_left) | 576 | while ((parent = rb_parent(node)) && node == parent->rb_left) |
573 | node = parent; | 577 | node = parent; |
574 | 578 | ||