Bug in JNI RegisterNatives?

Juerg Lehni juerg@scratchdisk.com
Fri Jun 16 07:33:00 GMT 2006


Tom,

Please let me know what I should do to get this patch finalized and  
commited. I would like to make sure it's getting there soon.

Jürg

Am 12.06.2006 um 21:59 schrieb Juerg Lehni:

> I would like to move forward with this patch now.
>
> Any ideas on how to address the issue with Class.h and jni.h?
>
> Is it maybe best to just leave it as it is and use this code bellow?
>
>   jstring class_name = klass->getName ();
>   meth.class_name = (char *) _Jv_MallocUnchecked  
> (JvGetStringUTFLength (class_name) + 1);
>   jsize total = JvGetStringUTFRegion (class_name, 0, class_name- 
> >length(), meth.class_name);
>   meth.class_name[total] = '\0';
>
> As the method in question is only executed once per native4 method  
> registration, it would not be a bit problem to do it this way...
>
> What do you think?
>
> Jürg
>
> Am 31.05.2006 um 19:22 schrieb Tom Tromey:
>
>>>>>>> "Juerg" == Juerg Lehni <juerg@scratchdisk.com> writes:
>>
>> Juerg> But the way JNINativeMethod is defined in jni.h, I cannot  
>> forward
>> Juerg> declare it that way.
>>
>> Oh yes.  Sorry about that.
>>
>> Juerg> Changing this would help, but I'm not sure we can do this,  
>> as the
>> Juerg> file is part of classpath. But this should work:
>> Juerg> typedef struct JNINativeMethod
>>
>> I'm away now and can't look to see if this is ok.
>> The key is whether it breaks compatibility in any way.
>>
>> Sometimes I think we should have simply made all the data members of
>> Class public for use ("at your own risk") by CNI.
>>
>> Juerg> Class.h does not foward declare JNIEnv. _Jv_JNIEnv is used  
>> at 4
>> Juerg> places, but not declared. I'm a bit puzzled. It must be  
>> declared in
>> Juerg> one of the includes, but where?
>>
>> There is a forward declaration in gcj/javaprims.h.
>>
>> Tom
>>
>



More information about the Java mailing list