Skip to content

Commit

Permalink
fix destructors of BTreeDelete nodes
Browse files Browse the repository at this point in the history
  • Loading branch information
julienhenry committed Jul 22, 2022
1 parent ecee065 commit 8f30dd5
Showing 1 changed file with 13 additions and 2 deletions.
15 changes: 13 additions & 2 deletions src/include/souffle/datastructure/BTreeDelete.h
Original file line number Diff line number Diff line change
Expand Up @@ -1660,12 +1660,16 @@ class btree_delete {
leftmost = nullptr;
res.cur = nullptr;
res.pos = 0;
delete static_cast<leaf_node*>(iter.cur);
} else {
// Whole tree now contained in child at position 0
root = iter.cur->getChild(0);
root->parent = nullptr;
for (unsigned i = 0; i <= iter.cur->asInnerNode().numElements; ++i) {
iter.cur->asInnerNode().children[i] = nullptr;
}
delete static_cast<inner_node*>(iter.cur);
}
delete iter.cur;
}
break;
}
Expand Down Expand Up @@ -1913,7 +1917,14 @@ class btree_delete {
left->numElements += right->getNumElements() + 1;

// Delete the right node
delete right;
if (right->isLeaf()) {
delete static_cast<leaf_node*>(right);
} else {
for (unsigned i = 0; i <= right->asInnerNode().numElements; ++i) {
right->asInnerNode().children[i] = nullptr;
}
delete static_cast<inner_node*>(right);
}
}

/**
Expand Down

0 comments on commit 8f30dd5

Please sign in to comment.