Commit 6cd655a3 by Mark Wielaard Committed by Andreas Tobler

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.

From-SVN: r86734
parent 4ca1f68f
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> 2004-08-29 Andrew John Hughes <gnu_andrew@member.fsf.org>
* java/util/AbstractCollection.java, java/util/AbstractList.java, * java/util/AbstractCollection.java, java/util/AbstractList.java,
......
/* Arrays.java -- Utility class with methods to operate on arrays /* 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. This file is part of GNU Classpath.
...@@ -968,6 +969,8 @@ public class Arrays ...@@ -968,6 +969,8 @@ public class Arrays
{ {
if (fromIndex > toIndex) if (fromIndex > toIndex)
throw new IllegalArgumentException(); throw new IllegalArgumentException();
if (fromIndex < 0)
throw new ArrayIndexOutOfBoundsException();
qsort(a, fromIndex, toIndex - fromIndex); qsort(a, fromIndex, toIndex - fromIndex);
} }
...@@ -1028,7 +1031,7 @@ public class Arrays ...@@ -1028,7 +1031,7 @@ public class Arrays
if (count <= 7) if (count <= 7)
{ {
for (int i = from + 1; i < from + count; i++) 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); swap(j, j - 1, array);
return; return;
} }
...@@ -1130,6 +1133,8 @@ public class Arrays ...@@ -1130,6 +1133,8 @@ public class Arrays
{ {
if (fromIndex > toIndex) if (fromIndex > toIndex)
throw new IllegalArgumentException(); throw new IllegalArgumentException();
if (fromIndex < 0)
throw new ArrayIndexOutOfBoundsException();
qsort(a, fromIndex, toIndex - fromIndex); qsort(a, fromIndex, toIndex - fromIndex);
} }
...@@ -1190,7 +1195,7 @@ public class Arrays ...@@ -1190,7 +1195,7 @@ public class Arrays
if (count <= 7) if (count <= 7)
{ {
for (int i = from + 1; i < from + count; i++) 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); swap(j, j - 1, array);
return; return;
} }
...@@ -1292,6 +1297,8 @@ public class Arrays ...@@ -1292,6 +1297,8 @@ public class Arrays
{ {
if (fromIndex > toIndex) if (fromIndex > toIndex)
throw new IllegalArgumentException(); throw new IllegalArgumentException();
if (fromIndex < 0)
throw new ArrayIndexOutOfBoundsException();
qsort(a, fromIndex, toIndex - fromIndex); qsort(a, fromIndex, toIndex - fromIndex);
} }
...@@ -1352,8 +1359,8 @@ public class Arrays ...@@ -1352,8 +1359,8 @@ public class Arrays
if (count <= 7) if (count <= 7)
{ {
for (int i = from + 1; i < from + count; i++) 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); swap(j, j - 1, array);
return; return;
} }
...@@ -1454,6 +1461,8 @@ public class Arrays ...@@ -1454,6 +1461,8 @@ public class Arrays
{ {
if (fromIndex > toIndex) if (fromIndex > toIndex)
throw new IllegalArgumentException(); throw new IllegalArgumentException();
if (fromIndex < 0)
throw new ArrayIndexOutOfBoundsException();
qsort(a, fromIndex, toIndex - fromIndex); qsort(a, fromIndex, toIndex - fromIndex);
} }
...@@ -1526,7 +1535,7 @@ public class Arrays ...@@ -1526,7 +1535,7 @@ public class Arrays
if (count <= 7) if (count <= 7)
{ {
for (int i = from + 1; i < from + count; i++) 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); swap(j, j - 1, array);
return; return;
} }
...@@ -1628,6 +1637,8 @@ public class Arrays ...@@ -1628,6 +1637,8 @@ public class Arrays
{ {
if (fromIndex > toIndex) if (fromIndex > toIndex)
throw new IllegalArgumentException(); throw new IllegalArgumentException();
if (fromIndex < 0)
throw new ArrayIndexOutOfBoundsException();
qsort(a, fromIndex, toIndex - fromIndex); qsort(a, fromIndex, toIndex - fromIndex);
} }
...@@ -1700,7 +1711,7 @@ public class Arrays ...@@ -1700,7 +1711,7 @@ public class Arrays
if (count <= 7) if (count <= 7)
{ {
for (int i = from + 1; i < from + count; i++) 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); swap(j, j - 1, array);
return; return;
} }
...@@ -1802,6 +1813,8 @@ public class Arrays ...@@ -1802,6 +1813,8 @@ public class Arrays
{ {
if (fromIndex > toIndex) if (fromIndex > toIndex)
throw new IllegalArgumentException(); throw new IllegalArgumentException();
if (fromIndex < 0)
throw new ArrayIndexOutOfBoundsException();
qsort(a, fromIndex, toIndex - fromIndex); qsort(a, fromIndex, toIndex - fromIndex);
} }
...@@ -1865,7 +1878,7 @@ public class Arrays ...@@ -1865,7 +1878,7 @@ public class Arrays
{ {
for (int i = from + 1; i < from + count; i++) for (int i = from + 1; i < from + count; i++)
for (int j = 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--) j--)
{ {
swap(j, j - 1, array); swap(j, j - 1, array);
...@@ -1970,6 +1983,8 @@ public class Arrays ...@@ -1970,6 +1983,8 @@ public class Arrays
{ {
if (fromIndex > toIndex) if (fromIndex > toIndex)
throw new IllegalArgumentException(); throw new IllegalArgumentException();
if (fromIndex < 0)
throw new ArrayIndexOutOfBoundsException();
qsort(a, fromIndex, toIndex - fromIndex); qsort(a, fromIndex, toIndex - fromIndex);
} }
...@@ -2033,7 +2048,7 @@ public class Arrays ...@@ -2033,7 +2048,7 @@ public class Arrays
{ {
for (int i = from + 1; i < from + count; i++) for (int i = from + 1; i < from + count; i++)
for (int j = 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--) j--)
{ {
swap(j, j - 1, array); swap(j, j - 1, array);
...@@ -2203,6 +2218,8 @@ public class Arrays ...@@ -2203,6 +2218,8 @@ public class Arrays
if (fromIndex > toIndex) if (fromIndex > toIndex)
throw new IllegalArgumentException("fromIndex " + fromIndex throw new IllegalArgumentException("fromIndex " + fromIndex
+ " > toIndex " + toIndex); + " > toIndex " + toIndex);
if (fromIndex < 0)
throw new ArrayIndexOutOfBoundsException();
// In general, the code attempts to be simple rather than fast, the // 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 // idea being that a good optimising JIT will be able to optimise it
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment