child->right->parent = child;
gchild->right = node;
- if(gchild->right)
- gchild->right->parent = gchild;
+ gchild->right->parent = gchild;
gchild->left = child;
- if(gchild->left)
- gchild->left->parent = gchild;
- *superparent = gchild;
+ gchild->left->parent = gchild;
+ *superparent = gchild;
gchild->parent = parent;
#ifdef AVL_COUNT
node->count = AVL_CALC_COUNT(node);
child->left->parent = child;
gchild->left = node;
- if(gchild->left)
- gchild->left->parent = gchild;
+ gchild->left->parent = gchild;
gchild->right = child;
- if(gchild->right)
- gchild->right->parent = gchild;
+ gchild->right->parent = gchild;
*superparent = gchild;
gchild->parent = parent;
balnode = parent;
} else {
subst = node->prev;
+ if(!subst) // This only happens if node is not actually in a tree at all.
+ abort();
if(subst == left) {
balnode = subst;