jni.cc (_Jv_JNI_NewObjectV): Corrected assertion.
* jni.cc (_Jv_JNI_NewObjectV): Corrected assertion. (_Jv_JNI_NewObject): Likewise. (_Jv_JNI_NewObjectA): Likewise. (_Jv_JNI_CallAnyMethodV): In constructor case, pass correct value as "return" type to _Jv_CallAnyMethodA. (_Jv_JNI_CallAnyMethodA): Likewise. (_Jv_JNI_CallAnyVoidMethodV): Likewise. From-SVN: r32017
This commit is contained in:
parent
5b0d59b4e7
commit
1adbc4d8be
2 changed files with 34 additions and 3 deletions
|
@ -1,5 +1,13 @@
|
|||
2000-02-16 Tom Tromey <tromey@cygnus.com>
|
||||
|
||||
* jni.cc (_Jv_JNI_NewObjectV): Corrected assertion.
|
||||
(_Jv_JNI_NewObject): Likewise.
|
||||
(_Jv_JNI_NewObjectA): Likewise.
|
||||
(_Jv_JNI_CallAnyMethodV): In constructor case, pass correct value
|
||||
as "return" type to _Jv_CallAnyMethodA.
|
||||
(_Jv_JNI_CallAnyMethodA): Likewise.
|
||||
(_Jv_JNI_CallAnyVoidMethodV): Likewise.
|
||||
|
||||
* jni.cc (_Jv_JNI_FindClass): Use ClassLoader.loadClass, not
|
||||
findClass.
|
||||
|
||||
|
|
|
@ -560,6 +560,10 @@ _Jv_JNI_CallAnyMethodV (JNIEnv *env, jobject obj, jclass klass,
|
|||
jvalue args[arg_types->length];
|
||||
array_from_valist (args, arg_types, vargs);
|
||||
|
||||
// For constructors we need to pass the Class we are instantiating.
|
||||
if (style == constructor)
|
||||
return_type = klass;
|
||||
|
||||
jvalue result;
|
||||
jthrowable ex = _Jv_CallAnyMethodA (obj, return_type, id,
|
||||
style == constructor,
|
||||
|
@ -604,6 +608,10 @@ _Jv_JNI_CallAnyMethodA (JNIEnv *env, jobject obj, jclass klass,
|
|||
_Jv_GetTypesFromSignature (id, decl_class,
|
||||
&arg_types, &return_type);
|
||||
|
||||
// For constructors we need to pass the Class we are instantiating.
|
||||
if (style == constructor)
|
||||
return_type = klass;
|
||||
|
||||
jvalue result;
|
||||
jthrowable ex = _Jv_CallAnyMethodA (obj, return_type, id,
|
||||
style == constructor,
|
||||
|
@ -636,6 +644,10 @@ _Jv_JNI_CallAnyVoidMethodV (JNIEnv *env, jobject obj, jclass klass,
|
|||
jvalue args[arg_types->length];
|
||||
array_from_valist (args, arg_types, vargs);
|
||||
|
||||
// For constructors we need to pass the Class we are instantiating.
|
||||
if (style == constructor)
|
||||
return_type = klass;
|
||||
|
||||
jthrowable ex = _Jv_CallAnyMethodA (obj, return_type, id,
|
||||
style == constructor,
|
||||
arg_types, args, NULL);
|
||||
|
@ -804,7 +816,11 @@ _Jv_JNI_NewObjectV (JNIEnv *env, jclass klass,
|
|||
{
|
||||
JvAssert (klass && ! klass->isArray ());
|
||||
JvAssert (! strcmp (id->name->data, "<init>")
|
||||
&& ! strcmp (id->signature->data, "()V"));
|
||||
&& id->signature->length > 2
|
||||
&& id->signature->data[0] == '('
|
||||
&& ! strcmp (&id->signature->data[id->signature->length - 2],
|
||||
")V"));
|
||||
|
||||
return _Jv_JNI_CallAnyMethodV<jobject, constructor> (env, NULL, klass,
|
||||
id, args);
|
||||
}
|
||||
|
@ -814,7 +830,10 @@ _Jv_JNI_NewObject (JNIEnv *env, jclass klass, jmethodID id, ...)
|
|||
{
|
||||
JvAssert (klass && ! klass->isArray ());
|
||||
JvAssert (! strcmp (id->name->data, "<init>")
|
||||
&& ! strcmp (id->signature->data, "()V"));
|
||||
&& id->signature->length > 2
|
||||
&& id->signature->data[0] == '('
|
||||
&& ! strcmp (&id->signature->data[id->signature->length - 2],
|
||||
")V"));
|
||||
|
||||
va_list args;
|
||||
jobject result;
|
||||
|
@ -833,7 +852,11 @@ _Jv_JNI_NewObjectA (JNIEnv *env, jclass klass, jmethodID id,
|
|||
{
|
||||
JvAssert (klass && ! klass->isArray ());
|
||||
JvAssert (! strcmp (id->name->data, "<init>")
|
||||
&& ! strcmp (id->signature->data, "()V"));
|
||||
&& id->signature->length > 2
|
||||
&& id->signature->data[0] == '('
|
||||
&& ! strcmp (&id->signature->data[id->signature->length - 2],
|
||||
")V"));
|
||||
|
||||
return _Jv_JNI_CallAnyMethodA<jobject, constructor> (env, NULL, klass,
|
||||
id, args);
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue