From 7a85da0ff0070a3b7ff9b61a366d7d7a784407de Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Fri, 30 May 2014 16:32:16 +0200 Subject: [PATCH] fix local ref overflow in JNI, due to too many logs during linphone_core_new(). --- coreapi/linphonecore_jni.cc | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/coreapi/linphonecore_jni.cc b/coreapi/linphonecore_jni.cc index f6478c5fe..4b04cb387 100644 --- a/coreapi/linphonecore_jni.cc +++ b/coreapi/linphonecore_jni.cc @@ -121,7 +121,13 @@ static void linphone_android_ortp_log_handler(OrtpLogLevel lev, const char *fmt, } if (handler_obj){ JNIEnv *env=ms_get_jni_env(); - env->CallVoidMethod(handler_obj,loghandler_id,env->NewStringUTF(LogDomain),(jint)lev,env->NewStringUTF(levname),env->NewStringUTF(str),NULL); + jstring jdomain=env->NewStringUTF(LogDomain); + jstring jlevname=env->NewStringUTF(levname); + jstring jstr=env->NewStringUTF(str); + env->CallVoidMethod(handler_obj,loghandler_id,jdomain,(jint)lev,jlevname,jstr,NULL); + if (jdomain) env->DeleteLocalRef(jdomain); + if (jlevname) env->DeleteLocalRef(jlevname); + if (jstr) env->DeleteLocalRef(jstr); }else linphone_android_log_handler(prio, str); }