ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/src/main/java/util/AbstractCollection.java
(Generate patch)

Comparing jsr166/src/main/java/util/AbstractCollection.java (file contents):
Revision 1.3 by jsr166, Sat Nov 26 20:59:57 2005 UTC vs.
Revision 1.4 by dl, Mon Nov 28 23:53:32 2005 UTC

# Line 160 | Line 160 | public abstract class AbstractCollection
160              int cap = r.length;
161              if (i < cap)
162                  r[i++] = (T)it.next();
163 <            else if (cap < Integer.MAX_VALUE) { // expand
164 <                int newCap = (cap * 3) / 2 + 1;
165 <                if (newCap <= cap) // integer overflow
163 >            else {
164 >                int newCap = ((cap / 2) + 1) * 3;
165 >                if (newCap <= cap) { // integer overflow
166 >                    if (cap == Integer.MAX_VALUE)
167 >                        throw new OutOfMemoryError
168 >                            ("Required array size too large");
169                      newCap = Integer.MAX_VALUE;
170 +                }
171                  r = Arrays.copyOf(r, newCap);
172 <            } else // can't expand
173 <                throw new OutOfMemoryError("Required array size too large");
170 <        }
172 >            }
173 >         }
174          // trim if overallocated
175          return i == r.length ? r : Arrays.copyOf(r, i);
176      }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines