JAL-4312 defend against ConcurrentModificationException
[jalview.git] / src / jalview / workers / AlignCalcManager.java
index 435d40c..508a069 100644 (file)
@@ -305,14 +305,16 @@ public class AlignCalcManager implements AlignCalcManagerI
           Class<? extends AlignCalcWorkerI> workerClass)
   {
     List<AlignCalcWorkerI> workingClass = new ArrayList<AlignCalcWorkerI>();
+    AlignCalcWorkerI[] workers;
     synchronized (canUpdate)
     {
-      for (AlignCalcWorkerI worker : canUpdate)
+      workers = canUpdate.toArray(new AlignCalcWorkerI[0]);
+    }
+    for (AlignCalcWorkerI worker : workers)
+    {
+      if (workerClass.equals(worker.getClass()))
       {
-        if (workerClass.equals(worker.getClass()))
-        {
-          workingClass.add(worker);
-        }
+        workingClass.add(worker);
       }
     }
     return (workingClass.size() == 0) ? null : workingClass;