--- jni.c 2005-01-10 09:36:54.012651920 +0000 +++ jni-new.c 2005-01-09 05:51:57.000000000 +0000 @@ -800,17 +800,27 @@ void Jam_CallVoidMethod(JNIEnv *env, jobject obj, jmethodID methodID, ...) { va_list jargs; + MethodBlock *mb; + Object *ob = (Object *)obj; + va_start(jargs, methodID); - executeMethodVaList((Object*)obj, ((Object*)obj)->class, (MethodBlock*)methodID, jargs); + if((mb = lookupVirtualMethod(ob, (MethodBlock*)methodID)) != NULL) + executeMethodVaList(ob, ((Object*)obj)->class, mb, jargs); va_end(jargs); } void Jam_CallVoidMethodV(JNIEnv *env, jobject obj, jmethodID methodID, va_list jargs) { - executeMethodVaList((Object*)obj, ((Object*)obj)->class, (MethodBlock*)methodID, jargs); + MethodBlock *mb; + Object *ob = (Object *)obj; + if((mb = lookupVirtualMethod(ob, (MethodBlock*)methodID)) != NULL) + executeMethodVaList(ob, ((Object*)obj)->class, mb, jargs); } void Jam_CallVoidMethodA(JNIEnv *env, jobject obj, jmethodID methodID, jvalue *jargs) { - executeMethodList((Object*)obj, ((Object*)obj)->class, (MethodBlock*)methodID, (u8*)jargs); + MethodBlock *mb; + Object *ob = (Object *)obj; + if((mb = lookupVirtualMethod(ob, (MethodBlock*)methodID)) != NULL) + executeMethodList(ob, ((Object*)obj)->class, mb, (u8*)jargs); } void Jam_CallNonvirtualVoidMethod(JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...) {