CopyOnWriteArrayList.java: Fix for empty list.
authorAndrew Haley <aph@redhat.com>
Tue, 27 Apr 2010 17:28:08 +0000 (17:28 +0000)
committerAndrew Haley <aph@gcc.gnu.org>
Tue, 27 Apr 2010 17:28:08 +0000 (17:28 +0000)
2010-04-27  Andrew Haley  <aph@redhat.com>

        * java/util/concurrent/CopyOnWriteArrayList.java: Fix for empty
        list.

From-SVN: r158790

libjava/classpath/ChangeLog
libjava/classpath/java/util/concurrent/CopyOnWriteArrayList.java
libjava/classpath/lib/java/util/concurrent/CopyOnWriteArrayList$1.class
libjava/classpath/lib/java/util/concurrent/CopyOnWriteArrayList$2.class
libjava/classpath/lib/java/util/concurrent/CopyOnWriteArrayList$3.class
libjava/classpath/lib/java/util/concurrent/CopyOnWriteArrayList$RandomAccessSubList.class
libjava/classpath/lib/java/util/concurrent/CopyOnWriteArrayList$SubList.class
libjava/classpath/lib/java/util/concurrent/CopyOnWriteArrayList.class

index f98d1c95b1e85ca0c3bb7d1c318361d1c050c392..1db1158ff9a3db131d7a794b9c77e367836cef66 100644 (file)
@@ -1,3 +1,8 @@
+2010-04-27  Andrew Haley  <aph@redhat.com>
+
+       * java/util/concurrent/CopyOnWriteArrayList.java: Fix for empty
+       list.
+
 2010-04-27  Andrew Haley  <aph@redhat.com>
 
        * gnu/javax/print/ipp/IppResponse.java (parseAttributes): Handle
index 6e4fb9a8ac910867073156a83877f2aafe0a72e3..0207182926910d35ed74f4f3a1a2eeacc55ae2c8 100644 (file)
@@ -452,7 +452,12 @@ public class CopyOnWriteArrayList<E>
   public synchronized boolean remove(Object element)
   {
     E[] snapshot = this.data;
-    E[] newData = (E[]) new Object[snapshot.length - 1];
+    int len = snapshot.length;
+
+    if (len == 0)
+      return false;
+
+    E[] newData = (E[]) new Object[len - 1];
     
     // search the element to remove while filling the backup array
     // this way we can run this method in O(n)
index 2dba6818fd6a03953ff6ec07e3f7265bef82587f..a8f5b0acb70ed7c46066f234568cad84935dab23 100644 (file)
Binary files a/libjava/classpath/lib/java/util/concurrent/CopyOnWriteArrayList$1.class and b/libjava/classpath/lib/java/util/concurrent/CopyOnWriteArrayList$1.class differ
index 03ab92a5ec1c40913c7650053f31eb9c9de6a35f..2ac9719071063f4612865ce253ed391511283cfb 100644 (file)
Binary files a/libjava/classpath/lib/java/util/concurrent/CopyOnWriteArrayList$2.class and b/libjava/classpath/lib/java/util/concurrent/CopyOnWriteArrayList$2.class differ
index 1f2e00af9baf1856c0ec34abd2c29e2248bc2353..c20c1fecf979a6c6306ed089d581fc5d6f392aae 100644 (file)
Binary files a/libjava/classpath/lib/java/util/concurrent/CopyOnWriteArrayList$3.class and b/libjava/classpath/lib/java/util/concurrent/CopyOnWriteArrayList$3.class differ
index 83fd284ec57228fa27faa131df244e7903382687..df5d0783cd3f6e7adf05ec0c6d0de11297640179 100644 (file)
Binary files a/libjava/classpath/lib/java/util/concurrent/CopyOnWriteArrayList$RandomAccessSubList.class and b/libjava/classpath/lib/java/util/concurrent/CopyOnWriteArrayList$RandomAccessSubList.class differ
index 572a880ad34c81e7cc08c820a41382ddc35509ef..1265019707288804f991f99b39a122bedd389b33 100644 (file)
Binary files a/libjava/classpath/lib/java/util/concurrent/CopyOnWriteArrayList$SubList.class and b/libjava/classpath/lib/java/util/concurrent/CopyOnWriteArrayList$SubList.class differ
index 0e7bd0f5aee8e5df8ffeefad416d36fad3471e43..97d63d83b3f3b3325a29099aca211ed91d6361b8 100644 (file)
Binary files a/libjava/classpath/lib/java/util/concurrent/CopyOnWriteArrayList.class and b/libjava/classpath/lib/java/util/concurrent/CopyOnWriteArrayList.class differ