]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[2090] Fix segfault
authorMichal 'vorner' Vaner <michal.vaner@nic.cz>
Fri, 20 Jul 2012 09:09:51 +0000 (11:09 +0200)
committerMichal 'vorner' Vaner <michal.vaner@nic.cz>
Fri, 20 Jul 2012 09:09:51 +0000 (11:09 +0200)
The (left|right)Rotate might have changed the parent, so it needs to be
reacquired after it.

src/lib/datasrc/rbtree.h

index 90e9d0fe8143ea827fe350ae78c736df8f11ce9b..3ff38339423501d00b91a79550b5930a7c15babb 100644 (file)
@@ -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;