cyclegraph: don't delete promise nodes
authorBrian Norris <banorris@uci.edu>
Wed, 6 Feb 2013 22:46:21 +0000 (14:46 -0800)
committerBrian Norris <banorris@uci.edu>
Wed, 6 Feb 2013 22:46:21 +0000 (14:46 -0800)
Merging can fail partway, leaving a somewhat inconsistent graph. This is
safe, since an inconsistent graph must be discarded as infeasible. But
this is a problem when dumping the modification order graph, since we
may dereference freed nodes. So for now, just don't free them.

cyclegraph.cc

index 69d6660bccee0768d2f8629d8ca787e6b3912d22..e0b221514f9bd88b0785839b44e2436921f9f4b8 100644 (file)
@@ -198,7 +198,7 @@ bool CycleGraph::mergeNodes(CycleNode *w_node, CycleNode *p_node,
        }
 
        erasePromiseNode(promise);
-       delete p_node;
+       /* Not deleting p_node, to maintain consistency if mergeNodes() fails */
 
        return !hasCycles;
 }