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