Change in listener
authoramiraj <amiraj.95@uci.edu>
Tue, 3 Dec 2019 23:38:23 +0000 (15:38 -0800)
committeramiraj <amiraj.95@uci.edu>
Tue, 3 Dec 2019 23:38:23 +0000 (15:38 -0800)
src/main/gov/nasa/jpf/listener/ConflictTracker.java

index 193d2f0..06e6e4a 100644 (file)
@@ -196,7 +196,8 @@ public class ConflictTracker extends ListenerAdapter {
                 String value = valueMap.get(i.getVarName());
                 Integer writer = writerMap.get(i.getVarName());
                     if ((value != null)&&(writer != null)) {
                 String value = valueMap.get(i.getVarName());
                 Integer writer = writerMap.get(i.getVarName());
                     if ((value != null)&&(writer != null)) {
-                        if (!value.equals(i.getValue())&&!writer.equals(i.getAppNum())) { // We have different values and different writers
+                        if (!value.equals(i.getValue())&&!writer.equals(i.getAppNum())) { 
+                            // We have different values and different writers
                             errorMessage = createErrorMessage(i, valueMap, writerMap);
                             return true;
                         }
                             errorMessage = createErrorMessage(i, valueMap, writerMap);
                             return true;
                         }
@@ -472,9 +473,16 @@ public class ConflictTracker extends ListenerAdapter {
     boolean isChanged = updateTheOutSet(parentNode, currentNode);
     
     // Check if the outSet of this state has changed, update all of its successors' sets if any
     boolean isChanged = updateTheOutSet(parentNode, currentNode);
     
     // Check if the outSet of this state has changed, update all of its successors' sets if any
-    if (isChanged)
+    if (isChanged) {
+       for (Node node : currentNode.getSuccessors()) {
+               HashMap<Transition, ArrayList<NameValuePair>> setSets = currentNode.getOutgoingEdges().get(node).getSetSetMap();
+               for (Map.Entry mapElement : setSets.entrySet()) {
+                       Transition currentTransition = (Transition)mapElement.getKey();
+                       conflictFound = conflictFound || checkForConflict(currentNode, node, currentTransition);
+               }
+       }
        conflictFound = conflictFound || propagateTheChange(currentNode);
        conflictFound = conflictFound || propagateTheChange(currentNode);
-
+    }
     // Update the parent node
     if (nodes.containsKey(id)) {
          parentNode = nodes.get(id);
     // Update the parent node
     if (nodes.containsKey(id)) {
          parentNode = nodes.get(id);