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;
}
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);
-
+ }
// Update the parent node
if (nodes.containsKey(id)) {
parentNode = nodes.get(id);