More bug fixes
[c11tester.git] / cyclegraph.cc
index 436464f9d361344de844e04da1cccdcbe15154db..6c7e945e98ee8e58ab0a73911f24b8484a935389 100644 (file)
@@ -297,6 +297,10 @@ void CycleGraph::freeAction(const ModelAction * act) {
                CycleNode *dst = cn->edges[i];
                dst->removeInEdge(cn);
        }
+       for(unsigned int i=0;i<cn->inedges.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;