]> rtime.felk.cvut.cz Git - can-eth-gw-linux.git/blobdiff - lib/rbtree.c
rbtree: break out of rb_insert_color loop after tree rotation
[can-eth-gw-linux.git] / lib / rbtree.c
index ccada9abe6f53b75da664d0718fefc6ea80b6ea8..12abb8abf442244be5b459253259fe6e8ee6135f 100644 (file)
@@ -109,18 +109,15 @@ void rb_insert_color(struct rb_node *node, struct rb_root *root)
                                }
                        }
 
-                       if (parent->rb_right == node)
-                       {
-                               register struct rb_node *tmp;
+                       if (parent->rb_right == node) {
                                __rb_rotate_left(parent, root);
-                               tmp = parent;
                                parent = node;
-                               node = tmp;
                        }
 
                        rb_set_black(parent);
                        rb_set_red(gparent);
                        __rb_rotate_right(gparent, root);
+                       break;
                } else {
                        {
                                register struct rb_node *uncle = gparent->rb_left;
@@ -134,18 +131,15 @@ void rb_insert_color(struct rb_node *node, struct rb_root *root)
                                }
                        }
 
-                       if (parent->rb_left == node)
-                       {
-                               register struct rb_node *tmp;
+                       if (parent->rb_left == node) {
                                __rb_rotate_right(parent, root);
-                               tmp = parent;
                                parent = node;
-                               node = tmp;
                        }
 
                        rb_set_black(parent);
                        rb_set_red(gparent);
                        __rb_rotate_left(gparent, root);
+                       break;
                }
        }