On Thu, 23 Mar 2023 19:41:24 GMT, Daniel Fuchs <dfu...@openjdk.org> wrote:

>> Sergey Tsypanov has updated the pull request incrementally with one 
>> additional commit since the last revision:
>> 
>>   Update src/java.base/share/classes/java/io/BufferedInputStream.java
>>   
>>   Co-authored-by: liach <7806504+li...@users.noreply.github.com>
>
> src/java.base/share/classes/java/io/BufferedInputStream.java line 183:
> 
>> 181:         if (buffer == EMPTY) {
>> 182:             buf = buffer = new byte[size];
>> 183:         }
> 
> You should probably use compareAndSet here too like in fill() - to handle the 
> case of asynchoronous close.
> This patch makes me a bit nervous. I would advise to get feedback from @bplb 
> and @AlanBateman .

Yes, I'm nervous about changing BIS too. Most of the initial revisions of the 
patch introduced compatibility issues so it had to be restricted to the no 
sub-class case. Here, it needs to CAS buf as otherwise it will break async 
close. 

I think the starting point for this issue is to show examples where it avoids 
needing to create the byte[] on first usage. The first use of read, 
readAllBytes, readNBytes, .. will create the byte[] but Sergey may have spotted 
some usages where it does help.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/13150#discussion_r1146756100

Reply via email to