Commit 4990e7d4d908bbfd5ab890720bc107f912c92afa

Authored by Georg Hopp
1 parent eacc711d

fix a small algorythmic bug introduced during optimization.

Showing 1 changed file with 9 additions and 4 deletions
... ... @@ -123,11 +123,15 @@ TR_treeDelete(TR_Tree * this, const void * search, TR_TreeComp comp)
123 123 } else {
124 124 TR_TREE_ROTATE(right, this, node->parent);
125 125 }
126   - } else {
127   - // case 3/4
128   - if (NULL != sibling
  126 + sibling = TR_TREE_SIBLING(node);
  127 + }
  128 +
  129 + if (NULL == sibling
  130 + || (rbBlack == sibling->color
129 131 && TR_TREE_NODE_BLACK(sibling->left)
130   - && TR_TREE_NODE_BLACK(sibling->right)) {
  132 + && TR_TREE_NODE_BLACK(sibling->right))) {
  133 + // case 3/4
  134 + if (NULL != sibling) {
131 135 sibling->color = rbRed;
132 136 }
133 137
... ... @@ -163,6 +167,7 @@ TR_treeDelete(TR_Tree * this, const void * search, TR_TreeComp comp)
163 167
164 168 TR_TREE_ROTATE(left, this, sibling);
165 169 }
  170 + sibling = TR_TREE_SIBLING(node);
166 171 }
167 172
168 173 // case 6
... ...
Please register or login to post a comment