sub->kids[1] = sub->kids[0];
sub->elems[0] = n->elems[ki-1];
sub->kids[0] = sib->kids[lastelem+1];
+ if (sub->kids[0]) sub->kids[0]->parent = sub;
n->elems[ki-1] = sib->elems[lastelem];
sib->kids[lastelem+1] = NULL;
sib->elems[lastelem] = NULL;
int j;
sub->elems[1] = n->elems[ki];
sub->kids[2] = sib->kids[0];
+ if (sub->kids[2]) sub->kids[2]->parent = sub;
n->elems[ki] = sib->elems[0];
sib->kids[0] = sib->kids[1];
for (j = 0; j < 2 && sib->elems[j+1]; j++) {
sub->kids[2] = sub->kids[0];
sub->elems[1] = n->elems[ki];
sub->kids[1] = sib->kids[1];
+ if (sub->kids[1]) sub->kids[1]->parent = sub;
sub->elems[0] = sib->elems[0];
sub->kids[0] = sib->kids[0];
+ if (sub->kids[0]) sub->kids[0]->parent = sub;
sfree(sib);
*/
int i;
LOG((" case 1\n"));
- for (i = ei; i < 3 && n->elems[i+1]; i++)
+ for (i = ei; i < 2 && n->elems[i+1]; i++)
n->elems[i] = n->elems[i+1];
n->elems[i] = NULL;
return; /* finished! */
LOG((" case 2c\n"));
a->elems[1] = n->elems[ei];
a->kids[2] = b->kids[0];
+ if (a->kids[2]) a->kids[2]->parent = a;
a->elems[2] = b->elems[0];
a->kids[3] = b->kids[1];
+ if (a->kids[3]) a->kids[3]->parent = a;
sfree(b);
/*
* That's built the big node in a, and destroyed b. Now