8219196: DataOutputStream.writeUTF may throw unexpected exceptions

Roger Riggs Roger.Riggs at oracle.com
Mon Mar 18 13:40:41 UTC 2019

Hi Brian,

On 03/15/2019 05:06 PM, Brian Burkhalter wrote:
> Updated: http://cr.openjdk.java.net/~bpb/8219196/webrev.01/ 
> <http://cr.openjdk.java.net/%7Ebpb/8219196/webrev.01/>

I'm at odds with Martin on including utflen in the loop.  (Or that's not 
what he meant).
Now it has to do two comparisons for every input byte instead of 1.

There is no need to have an early exit for input strings that are too long.
It is a very unusual case, probably never except in testing.

There might be a case for checking that  strlen <= 65535,
(even at 1 input byte per output byte it would be too large).
But even that is probably not worth the compare and branch.

>>> Instead of disabling the test statically, you could make it conditional
>>> on Runtime.maxMemory but the test will fail quickly anyway.
> For this I simply added the requirement to the jtreg tags instead.
With the fix, it will throw immediately before any allocation, so there is
no need for a restriction on memory size.
The only time that would be necessary would be running the test on a 
runtime without the fix.

The @requires >4g restriction is unnecessary.

$.02, Roger

More information about the core-libs-dev mailing list