Geir Magnusson Jr wrote:
When looking at HARMONY-1156, it became clear that our
java.io.OutputStream isn't right.
I'd like to make the following changes :
Follow the spec so that an IndexOOBE is thrown when :
a) offset is negative or
b) len is negative or
c) off + len > buff.length
So in the case of
write( byte[count], count, 0);
for any value of count >= 0, then none of the conditions are true, and
it should simply [quickly] return.
Now, the spec says that if the array is null, then a NPE should be
thrown, but this doesn't happen in the RI when len = 0.
This seems to be a reasonable thing to do, and therefore I think that we
should match the RI here, and not the spec.
Comments?
Hi Geir,
Sorry I don't catch well here. I write a test[1], extends
OutputStream and try passing a null byte and len = 0, RI and Harmony
both throw NPE(windows XP sp2, RI 1.5.06, the lastest Harmony,J9/DRLVM).
And HARMONY-1156 only asks if given "write( byte[count], count, 0);"
the write operation quickly returns. And we see it is better to fix in
JNI, am I right?
In fact, IMHO we are NOT breaking spec in return quickly as spec
does not tell clear what "indexes in the region is not valid"? :)
[1]
public void test_OutputStream () throws IOException {
try {
new MockOutputStream().write(null, 0, 0);
fail("should throw NPE");
} catch (NullPointerException e) {
// expected
}
}
class MockOutputStream extends OutputStream {
public void write(int oneByte) throws IOException {
throw new NotYetImplementedException();
}
}
geir
---------------------------------------------------------------------
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
--
Best Regards!
Jimmy, Jing Lv
China Software Development Lab, IBM
---------------------------------------------------------------------
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]