Browse Source

JNI-22 more local refs explicit deletion

JNI-44
Edouard Tisserant 9 years ago
parent
commit
2083f1ada8
  1. 2
      .hgignore
  2. 13
      src/jniutils.cc

2
.hgignore

@ -26,6 +26,8 @@ DecryptFlags.java
Rating.java Rating.java
Status.java Status.java
SyncHandshakeResult.java SyncHandshakeResult.java
IdentityFlags.java
SyncHandshakeSignal.java
# ignore vim workspace # ignore vim workspace

13
src/jniutils.cc

@ -253,6 +253,7 @@ namespace pEp {
jbyteArray a = reinterpret_cast<jbyteArray>(o); jbyteArray a = reinterpret_cast<jbyteArray>(o);
char * str = to_string(env, a); char * str = to_string(env, a);
_sl = stringlist_add(_sl, str); _sl = stringlist_add(_sl, str);
env->DeleteLocalRef(o);
free(str); free(str);
} }
@ -329,6 +330,7 @@ namespace pEp {
char *first_str = to_string(env, first); char *first_str = to_string(env, first);
char *second_str = to_string(env, second); char *second_str = to_string(env, second);
stringpair_t *sp = new_stringpair(first_str, second_str); stringpair_t *sp = new_stringpair(first_str, second_str);
env->DeleteLocalRef(pair);
free(first_str); free(first_str);
free(second_str); free(second_str);
@ -484,11 +486,12 @@ namespace pEp {
const char *name) const char *name)
{ {
jfieldID fieldID = getFieldID(env, classname, name, "[B"); jfieldID fieldID = getFieldID(env, classname, name, "[B");
jbyteArray field = jobject fobj = env->GetObjectField(obj, fieldID);
reinterpret_cast<jbyteArray>(env->GetObjectField(obj,
fieldID)); char *res = to_string(env, reinterpret_cast<jbyteArray>(fobj));
return to_string(env, field); env->DeleteLocalRef(fobj);
return res;
} }
pEp_identity *to_identity(JNIEnv *env, jobject obj) pEp_identity *to_identity(JNIEnv *env, jobject obj)
@ -561,6 +564,7 @@ namespace pEp {
jobject o = callObjectMethod(env, obj, "get", i); jobject o = callObjectMethod(env, obj, "get", i);
pEp_identity* ident = to_identity(env, o); pEp_identity* ident = to_identity(env, o);
_il = identity_list_add(_il, ident); _il = identity_list_add(_il, ident);
env->DeleteLocalRef(o);
} }
return il; return il;
@ -647,6 +651,7 @@ namespace pEp {
_bl = bloblist_add(_bl, b, size, mime_type, filename); _bl = bloblist_add(_bl, b, size, mime_type, filename);
env->DeleteLocalRef(o);
free(mime_type); free(mime_type);
free(filename); free(filename);
} }

Loading…
Cancel
Save