projects
/
c11tester.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
More bug fixes
[c11tester.git]
/
cyclegraph.cc
diff --git
a/cyclegraph.cc
b/cyclegraph.cc
index 436464f9d361344de844e04da1cccdcbe15154db..6c7e945e98ee8e58ab0a73911f24b8484a935389 100644
(file)
--- a/
cyclegraph.cc
+++ b/
cyclegraph.cc
@@
-297,6
+297,10
@@
void CycleGraph::freeAction(const ModelAction * act) {
CycleNode *dst = cn->edges[i];
dst->removeInEdge(cn);
}
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;
}
delete cn;
}
@@
-316,8
+320,18
@@
CycleNode::~CycleNode() {
}
void CycleNode::removeInEdge(CycleNode *src) {
}
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++) {
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;
edges[i] = edges[edges.size()-1];
edges.pop_back();
break;