bug fix
authorbdemsky <bdemsky>
Sat, 26 Mar 2011 20:45:29 +0000 (20:45 +0000)
committerbdemsky <bdemsky>
Sat, 26 Mar 2011 20:45:29 +0000 (20:45 +0000)
Robust/src/Analysis/Disjoint/ProcessStateMachines.java

index 718c60df0388e1d4566e024f73c67e4120d908ad..816c6e02bc4a3c566cbb7dfb7200aad6910c1f3e 100644 (file)
@@ -35,6 +35,7 @@ public class ProcessStateMachines {
   private void merge(StateMachineForEffects sm) {
     HashMap<SMFEState, Set<Pair<SMFEState, FieldDescriptor>>> backMap=buildBackMap(sm);
     boolean mergeAgain=false;
+    HashSet<SMFEState> removedStates=new HashSet<SMFEState>();
     do {
       mergeAgain=false;
       HashMap<Pair<SMFEState, FieldDescriptor>, Set<SMFEState>> revMap=buildReverse(backMap);
@@ -42,6 +43,8 @@ public class ProcessStateMachines {
        if (entry.getValue().size()>1) {
          SMFEState first=null;
          for(SMFEState state:entry.getValue()) {
+           if (removedStates.contains(state))
+             continue;
            if (first==null) {
              first=state;
            } else {
@@ -53,6 +56,7 @@ public class ProcessStateMachines {
                first=sm.initialState;
              }
              mergeTwoStates(first, state, backMap);
+             removedStates.add(state);
              sm.fn2state.remove(state.whereDefined);
            }
          }