From 43186ab4c9e39cefc550bd43329fc9ce765d14ec Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Wed, 18 Sep 2013 16:09:56 +0200 Subject: [PATCH] Fix memory leaks. --- coreapi/linphonecore_jni.cc | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/coreapi/linphonecore_jni.cc b/coreapi/linphonecore_jni.cc index b116efe46..d1fb06674 100644 --- a/coreapi/linphonecore_jni.cc +++ b/coreapi/linphonecore_jni.cc @@ -3724,8 +3724,10 @@ JNIEXPORT void JNICALL Java_org_linphone_core_PresenceServiceImpl_unref(JNIEnv * */ JNIEXPORT jstring JNICALL Java_org_linphone_core_PresenceServiceImpl_getId(JNIEnv *env, jobject jobj, jlong ptr) { LinphonePresenceService *service = (LinphonePresenceService *)ptr; - const char *cid = linphone_presence_service_get_id(service); - return cid ? env->NewStringUTF(cid) : NULL; + char *cid = linphone_presence_service_get_id(service); + jstring jid = cid ? env->NewStringUTF(cid) : NULL; + if (cid) ms_free(cid); + return jid; } /* @@ -3767,8 +3769,10 @@ JNIEXPORT jint JNICALL Java_org_linphone_core_PresenceServiceImpl_setBasicStatus */ JNIEXPORT jstring JNICALL Java_org_linphone_core_PresenceServiceImpl_getContact(JNIEnv *env, jobject jobj, jlong ptr) { LinphonePresenceService *service = (LinphonePresenceService *)ptr; - const char *ccontact = linphone_presence_service_get_contact(service); - return ccontact ? env->NewStringUTF(ccontact) : NULL; + char *ccontact = linphone_presence_service_get_contact(service); + jstring jcontact = ccontact ? env->NewStringUTF(ccontact) : NULL; + if (ccontact) ms_free(ccontact); + return jcontact; } /* @@ -3854,8 +3858,10 @@ JNIEXPORT void JNICALL Java_org_linphone_core_PresencePersonImpl_unref(JNIEnv *e */ JNIEXPORT jstring JNICALL Java_org_linphone_core_PresencePersonImpl_getId(JNIEnv *env, jobject jobj, jlong ptr) { LinphonePresencePerson *person = (LinphonePresencePerson *)ptr; - const char *cid = linphone_presence_person_get_id(person); - return cid ? env->NewStringUTF(cid) : NULL; + char *cid = linphone_presence_person_get_id(person); + jstring jid = cid ? env->NewStringUTF(cid) : NULL; + if (cid) ms_free(cid); + return jid; } /*