TreeMap.java (fabricateTree): Fix off-by-one error.
authorEric Blake <ebb9@email.byu.edu>
Fri, 3 Jan 2003 17:00:03 +0000 (17:00 +0000)
committerTom Tromey <tromey@gcc.gnu.org>
Fri, 3 Jan 2003 17:00:03 +0000 (17:00 +0000)
2003-01-03  Eric Blake  <ebb9@email.byu.edu>

* java/util/TreeMap.java (fabricateTree): Fix off-by-one error.
(TreeIterator.remove): Prefer IllegalStateException over
ConcurrentModificationException, to match Sun.

From-SVN: r60837

libjava/ChangeLog
libjava/java/util/TreeMap.java

index a599abda672da1e7437a5bf453fdda0dda395ff7..6b07d3fcc4f1c5ff38fe0654ed10589ef3ad6cc3 100644 (file)
@@ -1,3 +1,9 @@
+2003-01-03  Eric Blake  <ebb9@email.byu.edu>
+
+       * java/util/TreeMap.java (fabricateTree): Fix off-by-one error.
+       (TreeIterator.remove): Prefer IllegalStateException over
+       ConcurrentModificationException, to match Sun.
+
 2002-12-22  Anthony Green  <green@redhat.com>
 
        * boehm.cc (_Jv_MarkObj): Mark the protectionDomain of a class.
index dfa9bc638812beac4de761a4697b3de4c4cf3f6b..e0cff28e02c66542be3c6ce97117139c2041cb93 100644 (file)
@@ -865,7 +865,7 @@ public class TreeMap extends AbstractMap
     int rowsize;
 
     // Fill each row that is completely full of nodes.
-    for (rowsize = 2; rowsize + rowsize < count; rowsize <<= 1)
+    for (rowsize = 2; rowsize + rowsize <= count; rowsize <<= 1)
       {
         Node parent = row;
         Node last = null;
@@ -1468,10 +1468,10 @@ public class TreeMap extends AbstractMap
      */
     public void remove()
     {
-      if (knownMod != modCount)
-        throw new ConcurrentModificationException();
       if (last == null)
         throw new IllegalStateException();
+      if (knownMod != modCount)
+        throw new ConcurrentModificationException();
 
       removeNode(last);
       last = null;