Browse Source

[2090] Fix segfault

The (left|right)Rotate might have changed the parent, so it needs to be
reacquired after it.
Michal 'vorner' Vaner 12 years ago
parent
commit
09dd3c3bfb
1 changed files with 2 additions and 2 deletions
  1. 2 2
      src/lib/datasrc/rbtree.h

+ 2 - 2
src/lib/datasrc/rbtree.h

@@ -1491,8 +1491,8 @@ RBTree<T>::insertRebalance(typename RBNode<T>::RBNodePtr* root,
             } else {
                 if (node == parent->getRight()) {
                     node = parent;
-                    parent = node->getParent();
                     leftRotate(root, node);
+                    parent = node->getParent();
                 }
                 parent->color_ = RBNode<T>::BLACK;
                 parent->getParent()->color_ = RBNode<T>::RED;
@@ -1508,8 +1508,8 @@ RBTree<T>::insertRebalance(typename RBNode<T>::RBNodePtr* root,
             } else {
                 if (node == parent->getLeft()) {
                     node = parent;
-                    parent = node->getParent();
                     rightRotate(root, node);
+                    parent = node->getParent();
                 }
                 parent->color_ = RBNode<T>::BLACK;
                 parent->getParent()->color_ = RBNode<T>::RED;