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