diff --git a/.hgignore b/.hgignore index 7bc6a3e..c7e445f 100644 --- a/.hgignore +++ b/.hgignore @@ -26,6 +26,8 @@ DecryptFlags.java Rating.java Status.java SyncHandshakeResult.java +IdentityFlags.java +SyncHandshakeSignal.java # ignore vim workspace diff --git a/src/jniutils.cc b/src/jniutils.cc index a3a0535..ecae9a6 100644 --- a/src/jniutils.cc +++ b/src/jniutils.cc @@ -253,6 +253,7 @@ namespace pEp { jbyteArray a = reinterpret_cast(o); char * str = to_string(env, a); _sl = stringlist_add(_sl, str); + env->DeleteLocalRef(o); free(str); } @@ -329,6 +330,7 @@ namespace pEp { char *first_str = to_string(env, first); char *second_str = to_string(env, second); stringpair_t *sp = new_stringpair(first_str, second_str); + env->DeleteLocalRef(pair); free(first_str); free(second_str); @@ -484,11 +486,12 @@ namespace pEp { const char *name) { jfieldID fieldID = getFieldID(env, classname, name, "[B"); - jbyteArray field = - reinterpret_cast(env->GetObjectField(obj, - fieldID)); + jobject fobj = env->GetObjectField(obj, fieldID); + + char *res = to_string(env, reinterpret_cast(fobj)); - return to_string(env, field); + env->DeleteLocalRef(fobj); + return res; } pEp_identity *to_identity(JNIEnv *env, jobject obj) @@ -561,6 +564,7 @@ namespace pEp { jobject o = callObjectMethod(env, obj, "get", i); pEp_identity* ident = to_identity(env, o); _il = identity_list_add(_il, ident); + env->DeleteLocalRef(o); } return il; @@ -647,6 +651,7 @@ namespace pEp { _bl = bloblist_add(_bl, b, size, mime_type, filename); + env->DeleteLocalRef(o); free(mime_type); free(filename); }