aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libjava/ChangeLog5
-rw-r--r--libjava/java/util/ArrayList.java10
2 files changed, 12 insertions, 3 deletions
diff --git a/libjava/ChangeLog b/libjava/ChangeLog
index 3c356d4..a48ba51 100644
--- a/libjava/ChangeLog
+++ b/libjava/ChangeLog
@@ -1,3 +1,8 @@
+2002-04-05 Mark Wielaard <mark@klomp.org>
+
+ * java/util/ArrayList.jva (removeRange): If toIndex == fromIndex do
+ nothing, if toIndex < fromIndex throw IndexOutIfBoundsException.
+
2002-04-05 Adam Megacz <adam@xwt.org>
* exception.cc (abort): added static modifier
diff --git a/libjava/java/util/ArrayList.java b/libjava/java/util/ArrayList.java
index 34dc48a..59ce974 100644
--- a/libjava/java/util/ArrayList.java
+++ b/libjava/java/util/ArrayList.java
@@ -437,19 +437,23 @@ public class ArrayList extends AbstractList
/**
* Removes all elements in the half-open interval [fromIndex, toIndex).
- * You asked for it if you call this with invalid arguments.
+ * Does nothing when toIndex is equal to fromIndex.
*
* @param fromIndex the first index which will be removed
* @param toIndex one greater than the last index which will be removed
+ * @throws IndexOutOfBoundsException if fromIndex &gt; toIndex
*/
protected void removeRange(int fromIndex, int toIndex)
{
- if (fromIndex != toIndex)
+ int change = toIndex - fromIndex;
+ if (change > 0)
{
modCount++;
System.arraycopy(data, toIndex, data, fromIndex, size - toIndex);
- size -= toIndex - fromIndex;
+ size -= change;
}
+ else if (change < 0)
+ throw new IndexOutOfBoundsException();
}
/**