Skip to content

Commit d6c3051

Browse files
committed
fix fixup in dos tree
1 parent 8fd389a commit d6c3051

File tree

1 file changed

+4
-5
lines changed

1 file changed

+4
-5
lines changed

include/dos_tree.h

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -112,19 +112,18 @@ namespace alg
112112
void delete_key(dostree_node n)
113113
{
114114
rbtree_node child;
115-
116-
// phase 1. fix up size
117-
fixup_size(n);
118115

119-
// phase 2. handle red-black properties, and deletion work.
116+
/* Copy key/value from predecessor and then delete it instead */
120117
if (n->left != NULL && n->right != NULL) {
121-
/* Copy key/value from predecessor and then delete it instead */
122118
dostree_node pred = DOSNODE(maximum_node(n->left));
123119
DOSNODE(n)->key = DOSNODE(pred)->key;
124120
DOSNODE(n)->size = DOSNODE(pred)->size;
125121
n = pred;
126122
}
127123

124+
// fix up size from pred
125+
fixup_size(n);
126+
128127
assert(n->left == NULL || n->right == NULL);
129128
child = n->right == NULL ? n->left : n->right;
130129
if (node_color(n) == BLACK) {

0 commit comments

Comments
 (0)