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 69d6660..e0b2215 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;
 }