X-Git-Url: http://plrg.eecs.uci.edu/git/?p=c11tester.git;a=blobdiff_plain;f=cyclegraph.cc;h=6c7e945e98ee8e58ab0a73911f24b8484a935389;hp=436464f9d361344de844e04da1cccdcbe15154db;hb=ef795ab915a9311fc24c7ea7048f40d0a3bb34b3;hpb=74abaac236d8890b33aec5af4961ac9f14b7841c diff --git a/cyclegraph.cc b/cyclegraph.cc index 436464f9..6c7e945e 100644 --- a/cyclegraph.cc +++ b/cyclegraph.cc @@ -297,6 +297,10 @@ void CycleGraph::freeAction(const ModelAction * act) { CycleNode *dst = cn->edges[i]; dst->removeInEdge(cn); } + for(unsigned int i=0;iinedges.size();i++) { + CycleNode *src = cn->inedges[i]; + src->removeEdge(cn); + } delete cn; } @@ -316,8 +320,18 @@ CycleNode::~CycleNode() { } void CycleNode::removeInEdge(CycleNode *src) { + for(unsigned int i=0;i < inedges.size();i++) { + if (inedges[i] == src) { + inedges[i] = inedges[inedges.size()-1]; + inedges.pop_back(); + break; + } + } +} + +void CycleNode::removeEdge(CycleNode *dst) { for(unsigned int i=0;i < edges.size();i++) { - if (edges[i] == src) { + if (edges[i] == dst) { edges[i] = edges[edges.size()-1]; edges.pop_back(); break;