8078891: java.io.SequenceInputStream.close is not atomic and not idempotent

Pavel Rappo pavel.rappo at oracle.com
Fri Jul 26 19:37:11 UTC 2019


> On 26 Jul 2019, at 19:36, Alan Bateman <Alan.Bateman at oracle.com> wrote:
> 
> <snip>
> 
> In any case, the change looks okay but it might be simpler to restructure to use:
> 
> while (in != null) {
>     try { in.close() } catch (IOException e) { ... }
>     peekNextStream();
> }
> 
> to simplify the error handling and avoid mixing nextStream and peekNextStream. There is also some curious code in peekNextStream where it handles nextElement returning null - I don't know the history on that but it looks like it's trying to handling a broken Enumeration.

For the record. If we change this as you suggested, the code will behave
differently in the case of a single `null` element found in the midst of
iteration (broken enumeration?). The stream won't be able to close after 
running into it. But this most likely is a programming error anyway. 

Not sure.



More information about the core-libs-dev mailing list