From: Samuel Lepetit Date: Sat, 5 May 2012 11:00:00 +0000 (+0200) Subject: Check if the fields were found in Task.nativeInit and Comm.nativeInit X-Git-Tag: v3_9_90~569^2~19^2~101 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/bc436d65d9cca17916fe60d8f3bc6c052541699c Check if the fields were found in Task.nativeInit and Comm.nativeInit --- diff --git a/src/jmsg_comm.c b/src/jmsg_comm.c index 7ea8c1bf6c..c56c224f79 100644 --- a/src/jmsg_comm.c +++ b/src/jmsg_comm.c @@ -54,10 +54,17 @@ void jcomm_throw(JNIEnv *env, MSG_error_t status) { JNIEXPORT void JNICALL Java_org_simgrid_msg_Comm_nativeInit(JNIEnv *env, jclass cls) { jclass jfield_class_Comm = (*env)->FindClass(env, "org/simgrid/msg/Comm"); + if (!jfield_class_Comm) { + jxbt_throw_native(env,bprintf("Can't find the org/simgrid/msg/Comm class.")); + return; + } jcomm_field_Comm_bind = jxbt_get_sfield(env, "org/simgrid/msg/Comm", "bind", "J"); jcomm_field_Comm_taskBind = jxbt_get_sfield(env, "org/simgrid/msg/Comm", "taskBind", "J"); jcomm_field_Comm_receiving = jxbt_get_sfield(env, "org/simgrid/msg/Comm", "receiving", "Z"); jtask_field_Comm_task = jxbt_get_jfield(env, jfield_class_Comm, "task", "Lorg/simgrid/msg/Task;"); + if (!jcomm_field_Comm_bind || !jcomm_field_Comm_taskBind || !jcomm_field_Comm_receiving || !jtask_field_Comm_task) { + jxbt_throw_native(env,bprintf("Can't find some fields in Java class.")); + } } JNIEXPORT void JNICALL diff --git a/src/jmsg_task.c b/src/jmsg_task.c index d376bbc8e9..72a6480642 100644 --- a/src/jmsg_task.c +++ b/src/jmsg_task.c @@ -45,11 +45,15 @@ Java_org_simgrid_msg_Task_nativeInit(JNIEnv *env, jclass cls) { jclass jtask_class_Comm = (*env)->FindClass(env, "org/simgrid/msg/Comm"); jtask_field_Comm_constructor = (*env)->GetMethodID(env, jtask_class_Comm, "", "()V"); - //FIXME: Don't use jxbt_get_sfield directly. + //FIXME: Don't use jxbt_get_sfield directly, it is slower. jtask_field_Task_bind = jxbt_get_sfield(env, "org/simgrid/msg/Task", "bind", "J"); jtask_field_Comm_bind = jxbt_get_sfield(env, "org/simgrid/msg/Comm", "bind", "J"); jtask_field_Comm_taskBind = jxbt_get_sfield(env, "org/simgrid/msg/Comm", "taskBind", "J"); jtask_field_Comm_receiving = jxbt_get_sfield(env, "org/simgrid/msg/Comm", "receiving", "Z"); + if (!jtask_field_Task_bind || !jtask_field_Comm_bind || !jtask_field_Comm_taskBind || + !jtask_field_Comm_receiving || !jtask_field_Comm_constructor) { + jxbt_throw_native(env,bprintf("Can't find some fields in Java class.")); + } } JNIEXPORT void JNICALL