X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Fjava.c;h=a6b80224c11f80db4c1e1b6144fe305e3971aedc;hb=10a3718bdf7761e247b06808b8c72ca75cb0e0ba;hp=56a39d40fe511247908acf10f795b1ac349ec6e6;hpb=cce136946b879557f91183e4de58e92b81e138c8;p=collectd.git diff --git a/src/java.c b/src/java.c index 56a39d40..a6b80224 100644 --- a/src/java.c +++ b/src/java.c @@ -1817,6 +1817,7 @@ static cjni_callback_info_t *cjni_callback_info_create (JNIEnv *jvm_env, /* {{{ pthread_mutex_unlock (&java_callbacks_lock); ERROR ("java plugin: cjni_callback_info_create: strdup failed."); (*jvm_env)->ReleaseStringUTFChars (jvm_env, o_name, c_name); + sfree (cbi); return (NULL); } @@ -1826,7 +1827,8 @@ static cjni_callback_info_t *cjni_callback_info_create (JNIEnv *jvm_env, /* {{{ if (cbi->object == NULL) { ERROR ("java plugin: cjni_callback_info_create: NewGlobalRef failed."); - free (cbi); + sfree (cbi->name); + sfree (cbi); return (NULL); } @@ -1834,7 +1836,9 @@ static cjni_callback_info_t *cjni_callback_info_create (JNIEnv *jvm_env, /* {{{ if (cbi->class == NULL) { ERROR ("java plugin: cjni_callback_info_create: GetObjectClass failed."); - free (cbi); + (*jvm_env)->DeleteGlobalRef (jvm_env, cbi->object); + sfree (cbi->name); + sfree (cbi); return (NULL); } @@ -1845,7 +1849,9 @@ static cjni_callback_info_t *cjni_callback_info_create (JNIEnv *jvm_env, /* {{{ ERROR ("java plugin: cjni_callback_info_create: " "Cannot find the `%s' method with signature `%s'.", method_name, method_signature); - free (cbi); + (*jvm_env)->DeleteGlobalRef (jvm_env, cbi->object); + sfree (cbi->name); + sfree (cbi); return (NULL); }