2004-08-29 Mark Wielaard <mark@klomp.org>
authorMark Wielaard <mark@klomp.org>
Sun, 29 Aug 2004 20:16:22 +0000 (20:16 +0000)
committerAndreas Tobler <andreast@gcc.gnu.org>
Sun, 29 Aug 2004 20:16:22 +0000 (22:16 +0200)
* java/util/Arrays.java
(sort(byte[], int, int)): Check fromIndex < 0.
(sort(char[], int, int)): Likewise.
(sort(short[], int, int)): Likewise.
(sort(int[], int, int)): Likewise.
(sort(long[], int, int)): Likewise.
(sort(float[], int, int)): Likewise.
(sort(double[], int, int)): Likewise.
(sort(Object[], int, int, Comparator)): Likewise.
(qsort(byte[], int, int)): Honor lower bound from in insertion sort.
(qsort(char[], int, int)): Likewise.
(qsort(short[], int, int)): Likewise.
(qsort(int[], int, int)): Likewise.
(qsort(long[], int, int)): Likewise.
(qsort(float[], int, int)): Likewise.
(qsort(double[], int, int)): Likewise.

From-SVN: r86734

libjava/ChangeLog
libjava/java/util/Arrays.java

index 0b5bef2474eb74ff437411b4f13aaf6317f97e0e..33a66474af3ebb70380de0e4c4cb0413a98cace5 100644 (file)
@@ -1,3 +1,22 @@
+2004-08-29  Mark Wielaard  <mark@klomp.org>
+
+       * java/util/Arrays.java
+       (sort(byte[], int, int)): Check fromIndex < 0.
+       (sort(char[], int, int)): Likewise.
+       (sort(short[], int, int)): Likewise.
+       (sort(int[], int, int)): Likewise.
+       (sort(long[], int, int)): Likewise.
+       (sort(float[], int, int)): Likewise.
+       (sort(double[], int, int)): Likewise.
+       (sort(Object[], int, int, Comparator)): Likewise.
+       (qsort(byte[], int, int)): Honor lower bound from in insertion sort.
+       (qsort(char[], int, int)): Likewise.
+       (qsort(short[], int, int)): Likewise.
+       (qsort(int[], int, int)): Likewise.
+       (qsort(long[], int, int)): Likewise.
+       (qsort(float[], int, int)): Likewise.
+       (qsort(double[], int, int)): Likewise.
+
 2004-08-29  Andrew John Hughes  <gnu_andrew@member.fsf.org>
 
        * java/util/AbstractCollection.java, java/util/AbstractList.java,
index bd6458def003fe00000ac567b9ffce57105e5332..e34901a23f1567af64b5fd81578fa8d26ad4a5cf 100644 (file)
@@ -1,5 +1,6 @@
 /* Arrays.java -- Utility class with methods to operate on arrays
-   Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+   Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004
+   Free Software Foundation, Inc.
 
 This file is part of GNU Classpath.
 
@@ -968,6 +969,8 @@ public class Arrays
   {
     if (fromIndex > toIndex)
       throw new IllegalArgumentException();
+    if (fromIndex < 0)
+      throw new ArrayIndexOutOfBoundsException();
     qsort(a, fromIndex, toIndex - fromIndex);
   }
 
@@ -1028,7 +1031,7 @@ public class Arrays
     if (count <= 7)
       {
         for (int i = from + 1; i < from + count; i++)
-          for (int j = i; j > 0 && array[j - 1] > array[j]; j--)
+          for (int j = i; j > from && array[j - 1] > array[j]; j--)
             swap(j, j - 1, array);
         return;
       }
@@ -1130,6 +1133,8 @@ public class Arrays
   {
     if (fromIndex > toIndex)
       throw new IllegalArgumentException();
+    if (fromIndex < 0)
+      throw new ArrayIndexOutOfBoundsException();
     qsort(a, fromIndex, toIndex - fromIndex);
   }
 
@@ -1190,7 +1195,7 @@ public class Arrays
     if (count <= 7)
       {
         for (int i = from + 1; i < from + count; i++)
-          for (int j = i; j > 0 && array[j - 1] > array[j]; j--)
+          for (int j = i; j > from && array[j - 1] > array[j]; j--)
             swap(j, j - 1, array);
         return;
       }
@@ -1292,6 +1297,8 @@ public class Arrays
   {
     if (fromIndex > toIndex)
       throw new IllegalArgumentException();
+    if (fromIndex < 0)
+      throw new ArrayIndexOutOfBoundsException();
     qsort(a, fromIndex, toIndex - fromIndex);
   }
 
@@ -1352,8 +1359,8 @@ public class Arrays
     if (count <= 7)
       {
         for (int i = from + 1; i < from + count; i++)
-          for (int j = i; j > 0 && array[j - 1] > array[j]; j--)
-            swap(j, j - 1, array);
+         for (int j = i; j > from && array[j - 1] > array[j]; j--)
+           swap(j, j - 1, array);
         return;
       }
 
@@ -1454,6 +1461,8 @@ public class Arrays
   {
     if (fromIndex > toIndex)
       throw new IllegalArgumentException();
+    if (fromIndex < 0)
+      throw new ArrayIndexOutOfBoundsException();
     qsort(a, fromIndex, toIndex - fromIndex);
   }
 
@@ -1526,7 +1535,7 @@ public class Arrays
     if (count <= 7)
       {
         for (int i = from + 1; i < from + count; i++)
-          for (int j = i; j > 0 && array[j - 1] > array[j]; j--)
+          for (int j = i; j > from && array[j - 1] > array[j]; j--)
             swap(j, j - 1, array);
         return;
       }
@@ -1628,6 +1637,8 @@ public class Arrays
   {
     if (fromIndex > toIndex)
       throw new IllegalArgumentException();
+    if (fromIndex < 0)
+      throw new ArrayIndexOutOfBoundsException();
     qsort(a, fromIndex, toIndex - fromIndex);
   }
 
@@ -1700,7 +1711,7 @@ public class Arrays
     if (count <= 7)
       {
         for (int i = from + 1; i < from + count; i++)
-          for (int j = i; j > 0 && array[j - 1] > array[j]; j--)
+          for (int j = i; j > from && array[j - 1] > array[j]; j--)
             swap(j, j - 1, array);
         return;
       }
@@ -1802,6 +1813,8 @@ public class Arrays
   {
     if (fromIndex > toIndex)
       throw new IllegalArgumentException();
+    if (fromIndex < 0)
+      throw new ArrayIndexOutOfBoundsException();
     qsort(a, fromIndex, toIndex - fromIndex);
   }
 
@@ -1865,7 +1878,7 @@ public class Arrays
       {
         for (int i = from + 1; i < from + count; i++)
           for (int j = i;
-               j > 0 && Float.compare(array[j - 1], array[j]) > 0;
+               j > from && Float.compare(array[j - 1], array[j]) > 0;
                j--)
             {
               swap(j, j - 1, array);
@@ -1970,6 +1983,8 @@ public class Arrays
   {
     if (fromIndex > toIndex)
       throw new IllegalArgumentException();
+    if (fromIndex < 0)
+      throw new ArrayIndexOutOfBoundsException();
     qsort(a, fromIndex, toIndex - fromIndex);
   }
 
@@ -2033,7 +2048,7 @@ public class Arrays
       {
         for (int i = from + 1; i < from + count; i++)
           for (int j = i;
-               j > 0 && Double.compare(array[j - 1], array[j]) > 0;
+               j > from && Double.compare(array[j - 1], array[j]) > 0;
                j--)
             {
               swap(j, j - 1, array);
@@ -2203,6 +2218,8 @@ public class Arrays
     if (fromIndex > toIndex)
       throw new IllegalArgumentException("fromIndex " + fromIndex
                                          + " > toIndex " + toIndex);
+    if (fromIndex < 0)
+      throw new ArrayIndexOutOfBoundsException();
 
     // In general, the code attempts to be simple rather than fast, the
     // idea being that a good optimising JIT will be able to optimise it