From 7f1c113bef0969220c6a9849713e4ba7c2b451c4 Mon Sep 17 00:00:00 2001 From: Hamed Date: Tue, 5 Sep 2017 14:39:02 -0700 Subject: [PATCH] Fixing polarity path bug .... --- src/ASTAnalyses/ordergraph.cc | 44 ++++++++++++++++++++--------------- 1 file changed, 25 insertions(+), 19 deletions(-) diff --git a/src/ASTAnalyses/ordergraph.cc b/src/ASTAnalyses/ordergraph.cc index 2127db9..ce9a071 100644 --- a/src/ASTAnalyses/ordergraph.cc +++ b/src/ASTAnalyses/ordergraph.cc @@ -184,16 +184,19 @@ bool OrderGraph::isTherePath(OrderNode *source, OrderNode *destination){ SetIteratorOrderEdge *iterator = source->outEdges.iterator(); bool found = false; while(iterator->hasNext()){ - OrderNode* node = iterator->next()->sink; - if(!visited.contains(node)){ - if( node == destination ){ - found = true; - break; - } - visited.add(node); - found =isTherePathVisit(visited, node, destination); - if(found){ - break; + OrderEdge* edge = iterator->next(); + if(edge->polPos){ + OrderNode* node = edge->sink; + if(!visited.contains(node)){ + if( node == destination ){ + found = true; + break; + } + visited.add(node); + found =isTherePathVisit(visited, node, destination); + if(found){ + break; + } } } } @@ -205,15 +208,18 @@ bool OrderGraph::isTherePathVisit(HashsetOrderNode &visited, OrderNode* current, SetIteratorOrderEdge *iterator = current->outEdges.iterator(); bool found = false; while(iterator->hasNext()){ - OrderNode* node = iterator->next()->sink; - if(node == destination){ - found = true; - break; - } - visited.add(node); - if(isTherePathVisit(visited, node, destination)){ - found = true; - break; + OrderEdge* edge = iterator->next(); + if(edge->polPos){ + OrderNode* node = edge->sink; + if(node == destination){ + found = true; + break; + } + visited.add(node); + if(isTherePathVisit(visited, node, destination)){ + found = true; + break; + } } } delete iterator; -- 2.34.1