On Sat, 3 May 2025 07:25:09 GMT, Markus KARG <d...@openjdk.org> wrote:

>> Brian Burkhalter has updated the pull request incrementally with one 
>> additional commit since the last revision:
>> 
>>   8354724: Fix readAllChars gaffe in Reader returned by Readed.of and 
>> account for it in test
>
> src/java.base/share/classes/java/io/Reader.java line 213:
> 
>> 211:             public String readAllChars() throws IOException {
>> 212:                 ensureOpen();
>> 213:                 return cs.toString().substring(next);
> 
> Your change implies creating a full-length string *first* (including cyoping 
> and compression), just to strip it down to a smaller one *later*. It would be 
> more efficient to *first* strip it down, and compression into a `String` 
> *afterwards*. Imagine a huge `cs` with `next` being near to `length()`, and 
> you see the difference in efficiency! 🙂 
> 
> `cs.subSequence(next, cs.length() - next).toString()`

Oh, and we should set `next` afterwards, so the `Reader` knows that the end of 
the sequence is reached:


public String readAllChars() throws IOException {
    ensureOpen();
    var remainder = cs.subSequence(next, cs.length() - next);
    next = length();
    return remainder.toString();
}

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

PR Review Comment: https://git.openjdk.org/jdk/pull/24728#discussion_r2072359744

Reply via email to