6516099: InputStream.skipFully(int k) to skip exactly k bytes
Daniel Fuchs
daniel.fuchs at oracle.com
Thu Nov 8 09:50:21 UTC 2018
Hi Brian,
On 07/11/2018 23:37, Brian Burkhalter wrote:
>> http://hg.openjdk.java.net/jdk/jdk/file/44f34d2c3243/src/java.desktop/share/classes/com/sun/media/sound/AudioFloatInputStream.java#l99
>
> The above class is not a descendent of InputStream. In any case, as
> InputStream and all its “direct known subclasses” specify that skip()
> returns “the actual number of bytes skipped” the foregoing behavior
> would I think be a bug.
Damn. You're right. My mistake. But if I'm not mistaken
again it's called from a class that implements InputStream
(that's how I ended up looking at it):
http://hg.openjdk.java.net/jdk/jdk/file/44f34d2c3243/src/java.desktop/share/classes/com/sun/media/sound/AudioFloatFormatConverter.java#l117
That said, it's altogether possible that the condition on
which -1 is returned is dead code and actually never happens.
That's hard to tell.
>> Not sure there's anything that could be done in such cases, except
>> encouraging such subclasses to provide their own implementation
>> of skipNBytes?
>
> That’s probably true.
So FWIW my point was that there's nothing that you can really
guarantee in InputSteam::skipFully() if a subclass implementation of
skip() uses negative number to e.g. signal abnormal conditions
(such as EOF?). And I wonder if that should warrant a disclaimer
in the API doc of InputStream::skipFully (maybe an @implSpec?)
best regards
-- daniel
>
> Thanks,
>
> Brian
More information about the core-libs-dev
mailing list