projects
/
c11tester.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Update readme
[c11tester.git]
/
cyclegraph.cc
diff --git
a/cyclegraph.cc
b/cyclegraph.cc
index 436464f9d361344de844e04da1cccdcbe15154db..1d9533f4ba9b6f2fa61ae0018bb36dc22de5abcc 100644
(file)
--- a/
cyclegraph.cc
+++ b/
cyclegraph.cc
@@
-70,8
+70,7
@@
void CycleGraph::addNodeEdge(CycleNode *fromnode, CycleNode *tonode, bool forcee
* If the fromnode has a rmwnode, we should
* follow its RMW chain to add an edge at the end.
*/
* If the fromnode has a rmwnode, we should
* follow its RMW chain to add an edge at the end.
*/
- while (fromnode->getRMW()) {
- CycleNode *nextnode = fromnode->getRMW();
+ while (CycleNode * nextnode = fromnode->getRMW()) {
if (nextnode == tonode)
break;
fromnode = nextnode;
if (nextnode == tonode)
break;
fromnode = nextnode;
@@
-297,6
+296,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
+319,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;