Skip to content

Commit 7987547

Browse files
author
THOMAS S. MANNER
committed
Reordered edge and node deletion in digraph destructor to avoid segfaults in complex class hierarchies due to inherited classes holding on to edge pointers too long.
1 parent 2d87f89 commit 7987547

1 file changed

Lines changed: 3 additions & 1 deletion

File tree

src/digraph.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,10 @@ DiGraph::~DiGraph() {
2323

2424

2525
void DiGraph::clear() {
26-
while (mEdges.size()) delete *mEdges.begin();
26+
// Delete nodes first since they will likely delete their edges
2727
while (mNodes.size()) delete *mNodes.begin();
28+
// Just in case, delete any orphaned edges
29+
while (mEdges.size()) delete *mEdges.begin();
2830
}
2931

3032

0 commit comments

Comments
 (0)