On 10/05/2013 22:20, Dan Xu wrote:
Hi,
The FileInputStream.available() method can return a negative value
when the file position is beyond the endof afile. This is an
unspecified behaviour that has the potential to break applications
that expect available to return a value of 0 or greater. The
FileInputStream.skip(long) method allows a negative value as its
parameter. This conflicts with the specifications of InputStream and
FileInputStream classes.
They are both long standing behaviours. In the fix, available() has
been changed to only return 0 or positive values. And for the
skip(long) method, due to the compatibility concern, its behaviour
will not be changed. Instead, the related java specs are going to be
changed to describe its current behaviour.
bug: http://bugs.sun.com/view_bug.do?bug_id=8011136
webrev: http://cr.openjdk.java.net/~dxu/8011136/webrev.00/
Thanks for your review!
-Dan
Thanks for following up on this one. Overall I agree with the approach,
it specifies skip to match long standing behavior and fixes available to
not return negative values.
Just on wording, it might be better if the new statement in
InputStream.skip didn't start with "But". How about "Subclasses may ..."
as this would be consistent with exiting wording in this class.
For FileInputStream then the statement on how "available" behaves should
probably move to the available javadoc. Something like "Returns 0 when
the file position is beyond EOF" should be fine.
-Alan.