RFR: 4926314: Optimize Reader.read(CharBuffer) [v4]

Philippe Marschall github.com+471021+marschall at openjdk.java.net
Tue Jan 26 18:22:02 UTC 2021


On Tue, 19 Jan 2021 07:22:49 GMT, Philippe Marschall <github.com+471021+marschall at openjdk.org> wrote:

>> src/java.base/share/classes/java/io/Reader.java line 207:
>> 
>>> 205:                         target.put(cbuf, 0, n);
>>> 206:                         nread += n;
>>> 207:                         remaining -= n;
>> 
>> Wouldn't there be a possibility for target.put(cbuf, 0, n) to throw BufferOverflowException ?
>> For example:
>> - there's room (remaining) for TRANSFER_BUFFER_SIZE + 1 characters in target
>> - cbuff is sized to TRANSFER_BUFFER_SIZE
>> - 1st iteration of do loop transfers TRANSFER_BUFFER_SIZE charasters (remaining == 1)
>> - 2nd iteration reads > 1 (up to TRANSFER_BUFFER_SIZE) characters
>> - target.put throws BufferOverflowException
>> 
>> You have to limit the amount read in each iteration to be Math.min(remaining, cbuf.length)
>
> You're correct. I need to expand the unit tests.

Fixed

-------------

PR: https://git.openjdk.java.net/jdk/pull/1915


More information about the core-libs-dev mailing list