sun.nio.cs.StreamDecoder readBytes() possible issue
Hendrik Dev
hendrikdev22 at gmail.com
Tue Nov 4 20:10:35 UTC 2014
Javadoc for java.io.InputStream.read(byte[] b, int off , int len) says:
"Reads up to len bytes of data from the input stream into an array of
bytes. An attempt is made to read as many as len bytes, but a smaller
number may be read. The number of bytes actually read is returned as
an integer."
So maybe the stream can return 0 but there is still data (if not data
then -1 is assumed)?
If so then:
sun.nio.cs.StreamDecoder readBytes() does thow an exception if zero
bytes are read instead of looping
(https://github.com/openjdk-mirror/jdk7u-jdk/blob/master/src/share/classes/sun/nio/cs/StreamDecoder.java#L287)
So it should maybe look more like this:
assert rem > 0;
int n = 0;
do {
n = in.read(bb.array(), bb.arrayOffset() + pos, rem);
} while (n == 0);
if (n < 0)
return n;
assert (n <= rem) : "n = " + n + ", rem = " + rem;
Am i wrong?
Thanks
Hendrik
--
Hendrik Saly (salyh, hendrikdev22)
@hendrikdev22
PGP: 0x22D7F6EC
More information about the core-libs-dev
mailing list