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

Philippe Marschall github.com+471021+marschall at openjdk.java.net
Tue Feb 9 15:31:09 UTC 2021


On Fri, 5 Feb 2021 22:08:17 GMT, Brian Burkhalter <bpb at openjdk.org> wrote:

>> Philippe Marschall has updated the pull request incrementally with one additional commit since the last revision:
>> 
>>   Limit amount read to avoid BufferOverflowException
>>   
>>   - limit the amount read
>>   - add tests
>
> src/java.base/share/classes/java/io/Reader.java line 194:
> 
>> 192:             nread = this.read(cbuf, off, len);
>> 193:             if (nread > 0)
>> 194:                 target.position(target.position() + nread);
> 
> As `target` is mutable, I think you would do better to change lines 189-194 to something like:
>             char cbuf[] = target.array();
>             int pos = target.position();
>             int rem = target.limit() - pos;
>             if (rem <= 0)
>                 return -1;
>             int off = target.arrayOffset() + pos;
>             nread = this.read(cbuf, off, rem);
>             if (nread > 0)
>                 target.position(pos + nread);

Done

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

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


More information about the core-libs-dev mailing list