fix compact annotation array routine
authorjprocter <Jim Procter>
Mon, 28 May 2007 10:02:06 +0000 (10:02 +0000)
committerjprocter <Jim Procter>
Mon, 28 May 2007 10:02:06 +0000 (10:02 +0000)
src/jalview/datamodel/AlignmentAnnotation.java

index 3ed84a3..87c113f 100755 (executable)
@@ -554,18 +554,23 @@ Loading...
    * number of non-null annotation elements.
    * @return
    */
-  private int compactAnnotationArray() {
-    int j=0;
-    for (int i=0;i<annotations.length; i++) {
-      if (annotations[i]!=null && j!=i) {
-        annotations[j++] = annotations[i];
+  public int compactAnnotationArray() {
+    int i=0,iSize=annotations.length;
+    while (i<iSize)
+    {
+      if (annotations[i]==null) {
+        if (i+1<iSize)
+          System.arraycopy(annotations, i+1, annotations, i, iSize-i-1);
+        iSize--;
+      } else {
+        i++;
       }
     }
     Annotation[] ann = annotations;
-    annotations = new Annotation[j];
-    System.arraycopy(ann, 0, annotations, 0, j);
+    annotations = new Annotation[i];
+    System.arraycopy(ann, 0, annotations, 0, i);
     ann = null;
-    return j;
+    return iSize;
   }
 
   /**