On Tue, 6 Sep 2022 12:14:37 GMT, Alan Bateman <[email protected]> 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