JAL-3980 defensive copy - inefficient but fixes bug
authorJim Procter <j.procter@dundee.ac.uk>
Fri, 25 Mar 2022 14:30:17 +0000 (14:30 +0000)
committerJim Procter <j.procter@dundee.ac.uk>
Fri, 25 Mar 2022 14:30:17 +0000 (14:30 +0000)
src/jalview/io/SequenceAnnotationReport.java

index b0b0dee..7fc04e1 100644 (file)
 package jalview.io;
 
 import java.util.Locale;
-
+import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collection;
 import java.util.Comparator;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 
+import com.google.common.collect.Lists;
+
 import jalview.api.FeatureColourI;
 import jalview.datamodel.DBRefEntry;
 import jalview.datamodel.DBRefSource;
@@ -536,12 +539,19 @@ public class SequenceAnnotationReport
   protected int appendDbRefs(final StringBuilder sb, SequenceI ds,
           boolean summary)
   {
-    List<DBRefEntry> dbrefs = ds.getDBRefs();
-    if (dbrefs == null)
+    List<DBRefEntry> dbrefs,dbrefset = ds.getDBRefs();
+
+    if (dbrefset == null)
     {
       return 0;
     }
 
+    // PATCH for JAL-3980 defensive copy
+
+    dbrefs = new ArrayList<DBRefEntry>();
+    
+    dbrefs.addAll(dbrefset);
+    
     // note this sorts the refs held on the sequence!
     dbrefs.sort(comparator);
     boolean ellipsis = false;