Showing
1 changed file
with
3 additions
and
3 deletions
... | ... | @@ -31,6 +31,7 @@ void * |
31 | 31 | treeDelete(Tree * this, const void * search, TreeComp comp) |
32 | 32 | { |
33 | 33 | Tree node = *this; |
34 | + Tree del_node; | |
34 | 35 | |
35 | 36 | void * data; |
36 | 37 | |
... | ... | @@ -102,8 +103,8 @@ treeDelete(Tree * this, const void * search, TreeComp comp) |
102 | 103 | delete(node); |
103 | 104 | return data; |
104 | 105 | } else { |
106 | + del_node = node; | |
105 | 107 | if (NULL != child) { |
106 | - delete(node); | |
107 | 108 | node = child; |
108 | 109 | } else { |
109 | 110 | node->color = rbBlack; |
... | ... | @@ -171,13 +172,11 @@ treeDelete(Tree * this, const void * search, TreeComp comp) |
171 | 172 | if (rbBlack == TREE_PARENT(node)->color) { |
172 | 173 | // case 3 |
173 | 174 | Tree parent = node->parent; |
174 | - delete(node); | |
175 | 175 | node = parent; |
176 | 176 | continue; |
177 | 177 | } else { |
178 | 178 | // case 4 |
179 | 179 | TREE_PARENT(node)->color = rbBlack; |
180 | - delete(node); | |
181 | 180 | break; |
182 | 181 | } |
183 | 182 | } |
... | ... | @@ -240,6 +239,7 @@ treeDelete(Tree * this, const void * search, TreeComp comp) |
240 | 239 | break; |
241 | 240 | } |
242 | 241 | |
242 | + delete(del_node); | |
243 | 243 | /* |
244 | 244 | * not sure if deleting here is correct. |
245 | 245 | */ | ... | ... |
Please
register
or
login
to post a comment