diff --git a/core/jni/android_media_AudioSystem.cpp b/core/jni/android_media_AudioSystem.cpp index 04918ba8d0ef3..5b90349b25184 100644 --- a/core/jni/android_media_AudioSystem.cpp +++ b/core/jni/android_media_AudioSystem.cpp @@ -951,6 +951,7 @@ static jint convertAudioPortFromNative(JNIEnv *env, jintArray jFormats = NULL; jobjectArray jGains = NULL; jobject jHandle = NULL; + jobject jAudioPortConfig = NULL; jstring jDeviceName = NULL; bool useInMask; size_t numPositionMasks = 0; @@ -1129,7 +1130,6 @@ static jint convertAudioPortFromNative(JNIEnv *env, goto exit; } - jobject jAudioPortConfig; jStatus = convertAudioPortConfigFromNative(env, *jAudioPort, &jAudioPortConfig, @@ -1165,6 +1165,9 @@ exit: if (jHandle != NULL) { env->DeleteLocalRef(jHandle); } + if (jAudioPortConfig != NULL) { + env->DeleteLocalRef(jAudioPortConfig); + } return jStatus; } @@ -1235,12 +1238,15 @@ android_media_AudioSystem_listAudioPorts(JNIEnv *env, jobject clazz, } for (size_t i = 0; i < numPorts; i++) { - jobject jAudioPort; + jobject jAudioPort = NULL; jStatus = convertAudioPortFromNative(env, &jAudioPort, &nPorts[i]); if (jStatus != AUDIO_JAVA_SUCCESS) { goto exit; } env->CallBooleanMethod(jPorts, gArrayListMethods.add, jAudioPort); + if (jAudioPort != NULL) { + env->DeleteLocalRef(jAudioPort); + } } exit: