Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Check if the fields were found in Task.nativeInit and Comm.nativeInit
[simgrid.git] / src / jmsg_task.c
index d376bbc..72a6480 100644 (file)
@@ -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, "<init>", "()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