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