harmony-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Geir Magnusson Jr <g...@pobox.com>
Subject Re: [DRLVM][JNI]GetByteArrayRegion differs from RI (was Re: Exceptions found while running servlet...)
Date Mon, 14 Aug 2006 16:13:46 GMT

Ivan Volosyuk wrote:
> It looks like that it is possible to get zero bytes even at the very
> end of array. IMHO the order of boundary checks makes sense here.

This is an interesting problem. The JNI spec is clear that we should
throw an exception when one of the indexes isn't valid, and start ==
size is arguably not valid, as Gregory points out.

So I think the JNI impl is right for now (but I want to test w/ the JNI
impl in RI....)

As for classlibrary :

I was testing with the RI vi java.io.OutputStream#write(buff[], offset,
len), and the RI is clearly broken as it doesn't throw an NPE when [] is

However, strictly speaking, 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.

Therefore, I'll start a new thread re refining OutputStream to match
those rules, and then go on to test the JNI impl of the RI.


> -- 
> Ivan
> On 8/11/06, Gregory Shimansky <gshimansky@gmail.com> wrote:
>> 2006/8/11, Jimmy, Jing Lv <firepure@gmail.com>:
>> >
>> > Hi,
>> >
>> >      As discussed in the former thread, I find that a JNI of DRLVM
>> > (GetByteArrayRegion) differs from RI in passing parameter
>> > (byte[count],count,0). RI (and J9 VM) returns immediately but DRLVM
>> > throws an ArrayIndexOutOfBoundsException.
>> >      IMHO, it is better to improve here, make it follow RI, as JNI is
>> > also a part of API, and users may use it. So if no objections, shall I
>> > or someone raise a JIRA for this?
>> >
>> >      I don't know if Martin is urgent in using Harmony in Winstone
>> > servlet engine (Martin, can you read this?), so shall I work around in
>> > java code before we have conclusion?
>> >
>> >      Any comments/suggestions from DRLVM guys? Thanks!
>> >
>> I didn't really understand the condition when vm throws AIOBE. Do you
>> pass
>> start parameter count for the array of count length? But in this case the
>> start points to the element right after the array end. And spec [1]
>> explicitly states that this function should throw AIOBE in this case. Is
>> there something I don't understand?
>> [1]
>> http://java.sun.com/j2se/1.5.0/docs/guide/jni/spec/functions.html#wp6212
>> -- 
>> Gregory Shimansky, Intel Middleware Products Division

Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: harmony-dev-unsubscribe@incubator.apache.org
For additional commands, e-mail: harmony-dev-help@incubator.apache.org

View raw message