[
https://issues.apache.org/jira/browse/GERONIMO-4307?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Rick McGuire reassigned GERONIMO-4307:
--------------------------------------
Assignee: Rick McGuire
> Base64DecoderStream return int value between -128 and +127, should be between
> +0 and +255
> -----------------------------------------------------------------------------------------
>
> Key: GERONIMO-4307
> URL: https://issues.apache.org/jira/browse/GERONIMO-4307
> Project: Geronimo
> Issue Type: Bug
> Security Level: public(Regular issues)
> Components: specs
> Affects Versions: 2.1.1
> Environment: Geronimo 2.1.1 running on Ubuntu 7.10, Sun Java 1.5.
> Reporter: Andrew
> Assignee: Rick McGuire
>
> The documentation for InputStream specifies the following:
> Reads the next byte of data from the input stream. The value byte is returned
> as an int in the range 0 to 255. If no byte is available because the end of
> the stream has been reached, the value -1 is returned. This method blocks
> until input data is available, the end of the stream is detected, or an
> exception is thrown.
> A subclass must provide an implementation of this method.
> Note the second sentence. As Base64DecoderStream extends FilterInputStream,
> which in turn extends InputStream, it should be adhering to that.
> However, it currently returns a byte directly, and because Java is a bit
> strange, it will do sign extension (I think that's the term?), so a byte of
> -1 will become an int of -1 as well, as opposed to an int of 255. As you
> might imagine, this causes all sorts of interesting problems when code tries
> to read the bytes from this stream and check for a negative value to
> determine EOS.
> I imagine the fix for this is simply to change
> public int read() throws IOException
> {
> return getByte();
> }
> to read
> public int read() throws IOException
> {
> return getByte() & 0xFF;
> }
> Which is essentially what the Java class ByteArrayInputStream does.
> Unless there is a good reason for this behaviour?
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.