mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
Memory Management : Fix memory leak in bounding box tree
This commit is contained in:
parent
0e57cfe201
commit
32614152a6
@ -187,6 +187,9 @@ namespace cvf {
|
||||
AABBTreeNodeInternal* createNode();
|
||||
AABBTreeNodeLeaf* createOrAssignLeaf(size_t leafIndex, size_t bbId);
|
||||
|
||||
private:
|
||||
static void deleteInternalNodesBottomUp(AABBTreeNode* node);
|
||||
|
||||
protected:
|
||||
struct InternalNodeAndRange
|
||||
{
|
||||
@ -598,6 +601,7 @@ bool AABBTree::buildTree(AABBTreeNodeInternal* pNode, size_t iFromIdx, size_t iT
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -606,6 +610,8 @@ void AABBTree::freeThis()
|
||||
// Delete all the internal nodes
|
||||
if (m_pRoot)
|
||||
{
|
||||
AABBTree::deleteInternalNodesBottomUp(m_pRoot);
|
||||
|
||||
m_pRoot = NULL;
|
||||
}
|
||||
|
||||
@ -781,6 +787,24 @@ cvf::AABBTreeNodeLeaf* AABBTree::createOrAssignLeaf(size_t leafIndex, size_t bbI
|
||||
return leaf;
|
||||
}
|
||||
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void AABBTree::deleteInternalNodesBottomUp(AABBTreeNode* node)
|
||||
{
|
||||
// All leaf nodes (AABBTreeNodeLeaf) are allocated in m_leafPool and does not require a delete
|
||||
if (node->type() == AB_LEAF) return;
|
||||
|
||||
auto internalNode = dynamic_cast<AABBTreeNodeInternal*>(node);
|
||||
CVF_ASSERT(internalNode);
|
||||
|
||||
AABBTree::deleteInternalNodesBottomUp(internalNode->left());
|
||||
AABBTree::deleteInternalNodesBottomUp(internalNode->right());
|
||||
|
||||
delete internalNode;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
/// Creates leafs for the supplied valid bounding boxes, keeping the original index
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
Loading…
Reference in New Issue
Block a user