I continue to think JDK library code should avoid exposing VM
implementation limits to users, i.e. exception detail messages should
not include MAX_ARRAY_SIZE

I think our grow code has been drifting to being inconsistent and
incoherent over the years.

In the code below, the detail message looks wrong; this exception is
thrown when minCapacity wraps around, not when between SAFE_BOUND and
UNSAFE_BOUND.

         int SAFE_BOUND = MAX_ARRAY_SIZE >> coder;
         int UNSAFE_BOUND = Integer.MAX_VALUE >> coder;
         if (UNSAFE_BOUND - minCapacity < 0) { // overflow
-            throw new OutOfMemoryError();
+            throw new
+            OutOfMemoryError("StringBuilder buffer exceeds maximum size: " +
+                             MAX_ARRAY_SIZE);

On Mon, Jun 1, 2020 at 12:19 PM Jim Laskey <james.las...@oracle.com> wrote:
>
> To be honest I should (will) file another bug against the use of math exact 
> here. I don't think the tests actually catch what they think they test. Looks 
> good in theory but more often than not, the pos array above that code will 
> blow up before you get there.
>
>
>
>
> > On Jun 1, 2020, at 4:09 PM, Paul Sandoz <paul.san...@oracle.com> wrote:
> >
> > +1
> >
> > I quibble about the “ignored” variable name for the caught 
> > ArithmeticException.
> >
> > Paul.
> >
> >> On Jun 1, 2020, at 5:48 AM, Jim Laskey <james.las...@oracle.com> wrote:
> >>
> >> Cleans up every case of OutOfMemoryError without a message. Some logic 
> >> changes in String::repeat and ByteArrayChannel:: hugeCapacity.
> >>
> >> Thank you.
> >>
> >> Cheers,
> >>
> >> -- Jim
> >>
> >> webrev: http://cr.openjdk.java.net/~jlaskey/8230744/webrev-00/index.html 
> >> <http://cr.openjdk.java.net/~jlaskey/8230744/webrev-00/index.html>
> >> jbs: https://bugs.openjdk.java.net/browse/JDK-8230744 
> >> <https://bugs.openjdk.java.net/browse/JDK-8230744>
> >>
> >>
> >
>

Reply via email to