diff options
| author | mkoch <mkoch@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-09-23 18:01:46 +0000 |
|---|---|---|
| committer | mkoch <mkoch@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-09-23 18:01:46 +0000 |
| commit | 6612507d089d520d82610f1f942d23c30529e2d6 (patch) | |
| tree | bc1195b7fcbf1306b6476efad007af02f463e4c3 /libjava | |
| parent | df481199f380f34f881d98793eabd85c887b7eaa (diff) | |
| download | ppe42-gcc-6612507d089d520d82610f1f942d23c30529e2d6.tar.gz ppe42-gcc-6612507d089d520d82610f1f942d23c30529e2d6.zip | |
2004-09-23 Mark Wielaard <mark@klomp.org>
* java/util/Collections.java
(binarySearch(List, Object, Comparator)): Explicitly
reverse direction in list iterator.
(rotate): Just return when list is empty.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@87970 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libjava')
| -rw-r--r-- | libjava/ChangeLog | 7 | ||||
| -rw-r--r-- | libjava/java/util/Collections.java | 20 |
2 files changed, 24 insertions, 3 deletions
diff --git a/libjava/ChangeLog b/libjava/ChangeLog index df73e81bbb4..eec4c73d3bb 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,10 @@ +2004-09-23 Mark Wielaard <mark@klomp.org> + + * java/util/Collections.java + (binarySearch(List, Object, Comparator)): Explicitly + reverse direction in list iterator. + (rotate): Just return when list is empty. + 2004-09-23 Tom Tromey <tromey@redhat.com> PR java/17329: diff --git a/libjava/java/util/Collections.java b/libjava/java/util/Collections.java index 7e5ac6ec2c1..d50563c9022 100644 --- a/libjava/java/util/Collections.java +++ b/libjava/java/util/Collections.java @@ -574,14 +574,26 @@ public class Collections { ListIterator itr = l.listIterator(); int i = 0; + Object o = itr.next(); // Assumes list is not empty (see isSequential) + boolean forward = true; while (low <= hi) { pos = (low + hi) >> 1; if (i < pos) - for ( ; i != pos; i++, itr.next()); + { + if (!forward) + itr.next(); // Changing direction first. + for ( ; i != pos; i++, o = itr.next()); + forward = true; + } else - for ( ; i != pos; i--, itr.previous()); - final int d = compare(key, itr.next(), c); + { + if (forward) + itr.previous(); // Changing direction first. + for ( ; i != pos; i--, o = itr.previous()); + forward = false; + } + final int d = compare(key, o, c); if (d == 0) return pos; else if (d < 0) @@ -1110,6 +1122,8 @@ public class Collections public static void rotate(List list, int distance) { int size = list.size(); + if (size == 0) + return; distance %= size; if (distance == 0) return; |

