jni.cc (nathash_add): Don't strdup the method signature.
2005-02-13 Anthony Green <green@redhat.com> * jni.cc (nathash_add): Don't strdup the method signature. (_Jv_JNI_RegisterNatives): Convert the slashes to dots in the method signature. Update copyright. From-SVN: r95010
This commit is contained in:
parent
4230cec2f9
commit
f1b2b25ccf
@ -1,3 +1,10 @@
|
||||
2005-02-13 Anthony Green <green@redhat.com>
|
||||
|
||||
* jni.cc (nathash_add): Don't strdup the method signature.
|
||||
(_Jv_JNI_RegisterNatives): Convert the slashes to dots in the
|
||||
method signature.
|
||||
Update copyright.
|
||||
|
||||
2005-02-12 Mark Wielaard <mark@klomp.org>
|
||||
|
||||
Fixes bug libgcj/8170
|
||||
|
@ -1,6 +1,6 @@
|
||||
// jni.cc - JNI implementation, including the jump table.
|
||||
|
||||
/* Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004
|
||||
/* Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
|
||||
Free Software Foundation
|
||||
|
||||
This file is part of libgcj.
|
||||
@ -1880,7 +1880,8 @@ nathash_add (const JNINativeMethod *method)
|
||||
return;
|
||||
// FIXME
|
||||
slot->name = strdup (method->name);
|
||||
slot->signature = strdup (method->signature);
|
||||
// This was already strduped in _Jv_JNI_RegisterNatives.
|
||||
slot->signature = method->signature;
|
||||
slot->fnPtr = method->fnPtr;
|
||||
}
|
||||
|
||||
@ -1894,6 +1895,8 @@ _Jv_JNI_RegisterNatives (JNIEnv *env, jclass klass,
|
||||
// the nathash table.
|
||||
JvSynchronize sync (global_ref_table);
|
||||
|
||||
JNINativeMethod dottedMethod;
|
||||
|
||||
// Look at each descriptor given us, and find the corresponding
|
||||
// method in the class.
|
||||
for (int j = 0; j < nMethods; ++j)
|
||||
@ -1905,15 +1908,28 @@ _Jv_JNI_RegisterNatives (JNIEnv *env, jclass klass,
|
||||
{
|
||||
_Jv_Method *self = &imeths[i];
|
||||
|
||||
if (! strcmp (self->name->chars (), methods[j].name)
|
||||
&& ! strcmp (self->signature->chars (), methods[j].signature))
|
||||
// Copy this JNINativeMethod and do a slash to dot
|
||||
// conversion on the signature.
|
||||
dottedMethod.name = methods[j].name;
|
||||
dottedMethod.signature = strdup (methods[j].signature);
|
||||
dottedMethod.fnPtr = methods[j].fnPtr;
|
||||
char *c = dottedMethod.signature;
|
||||
while (*c)
|
||||
{
|
||||
if (*c == '/')
|
||||
*c = '.';
|
||||
c++;
|
||||
}
|
||||
|
||||
if (! strcmp (self->name->chars (), dottedMethod.name)
|
||||
&& ! strcmp (self->signature->chars (), dottedMethod.signature))
|
||||
{
|
||||
if (! (self->accflags & java::lang::reflect::Modifier::NATIVE))
|
||||
break;
|
||||
|
||||
// Found a match that is native.
|
||||
found = true;
|
||||
nathash_add (&methods[j]);
|
||||
nathash_add (&dottedMethod);
|
||||
|
||||
break;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user