On Tue, 6 Sep 2022 12:14:37 GMT, Alan Bateman <al...@openjdk.org> wrote:

>> With the changes you proposed a CSR will definitely be needed.
>
> BIS dates from JDK 1.0 and it's not hard to find examples that extend it. The 
> HexPrinter test reminds us that it has been possible for 25+ years to 
> override the read methods and snoop on all bytes that are read. Adding an 
> override of the transferTo method that bypasses the read methods might break 
> these subclasses. So I think Daniel is right that we have to be cautious.
> 
> So I think the feedback that you have now is that bypassing the buffer is 
> problematic when using mark, when there are buffered bytes, or when BIS has 
> been extended. It may be that the starting point is something very 
> conservative like this:
> 
> 
>     @Override
>     public long transferTo(OutputStream out) throws IOException {
>         if (getClass() == BufferedInputStream.class
>                 && ((count - pos) <= 0) && (markpos == -1)) {
>             return getInIfOpen().transferTo(out);
>         } else {
>             return super.transferTo(out);
>         }
>     }
> 
> 
> There is also the issue of locking and async close to look into.

Thank you for your decision about this issue, so instead of fixing the existing 
bugs I will implement as you outlined.

BTW, locking and rebasing is on the way.

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

PR: https://git.openjdk.org/jdk/pull/6935

Reply via email to