unix/modjni: call_method: Check for Java exception after method return.

This commit is contained in:
Paul Sokolovsky 2015-10-14 00:24:36 +03:00
parent 2ec835f572
commit 41eb705477

View File

@ -450,15 +450,19 @@ STATIC mp_obj_t call_method(jobject obj, const char *name, jarray methods, bool
} else { } else {
if (MATCH(ret_type, "void")) { if (MATCH(ret_type, "void")) {
JJ(CallVoidMethodA, obj, method_id, jargs); JJ(CallVoidMethodA, obj, method_id, jargs);
check_exception();
ret = mp_const_none; ret = mp_const_none;
} else if (MATCH(ret_type, "int")) { } else if (MATCH(ret_type, "int")) {
jint res = JJ(CallIntMethodA, obj, method_id, jargs); jint res = JJ(CallIntMethodA, obj, method_id, jargs);
check_exception();
ret = mp_obj_new_int(res); ret = mp_obj_new_int(res);
} else if (MATCH(ret_type, "boolean")) { } else if (MATCH(ret_type, "boolean")) {
jboolean res = JJ(CallBooleanMethodA, obj, method_id, jargs); jboolean res = JJ(CallBooleanMethodA, obj, method_id, jargs);
check_exception();
ret = mp_obj_new_bool(res); ret = mp_obj_new_bool(res);
} else if (is_object_type(ret_type)) { } else if (is_object_type(ret_type)) {
res = JJ(CallObjectMethodA, obj, method_id, jargs); res = JJ(CallObjectMethodA, obj, method_id, jargs);
check_exception();
ret = new_jobject(res); ret = new_jobject(res);
} else { } else {
JJ(ReleaseStringUTFChars, name_o, decl); JJ(ReleaseStringUTFChars, name_o, decl);