diff options
| author | 2018-08-21 14:29:33 -0700 | |
|---|---|---|
| committer | 2018-08-21 14:39:14 -0700 | |
| commit | 1070119710ed1433779514f1490c7644b6de6625 (patch) | |
| tree | fa8adb8fb60d8d4bd654700760294e84215077cb | |
| parent | 506723ecb2cb32b812f960708aff95d37eac4d37 (diff) | |
AudioEffect: Fix memory leak in JNI
Test: regression with CTS and solo tester
Bug: 112382112
Change-Id: I2929c038eb5f61c4110d375d6b17d28f627ce96f
| -rw-r--r-- | media/jni/audioeffect/android_media_AudioEffect.cpp | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/media/jni/audioeffect/android_media_AudioEffect.cpp b/media/jni/audioeffect/android_media_AudioEffect.cpp index 8c9025b85860..693bd8b4b51c 100644 --- a/media/jni/audioeffect/android_media_AudioEffect.cpp +++ b/media/jni/audioeffect/android_media_AudioEffect.cpp @@ -824,21 +824,19 @@ static jobjectArray android_media_AudioEffect_native_queryPreProcessings(JNIEnv *env, jclass clazz __unused, jint audioSession) { - effect_descriptor_t *descriptors = new effect_descriptor_t[AudioEffect::kMaxPreProcessing]; + auto descriptors = std::make_unique<effect_descriptor_t[]>(AudioEffect::kMaxPreProcessing); uint32_t numEffects = AudioEffect::kMaxPreProcessing; status_t status = AudioEffect::queryDefaultPreProcessing((audio_session_t) audioSession, - descriptors, + descriptors.get(), &numEffects); if (status != NO_ERROR || numEffects == 0) { - delete[] descriptors; return NULL; } ALOGV("queryDefaultPreProcessing() got %d effects", numEffects); jobjectArray ret = env->NewObjectArray(numEffects, fields.clazzDesc, NULL); if (ret == NULL) { - delete[] descriptors; return ret; } @@ -875,7 +873,7 @@ android_media_AudioEffect_native_queryPreProcessings(JNIEnv *env, jclass clazz _ if (jdesc == NULL) { ALOGE("env->NewObject(fields.clazzDesc, fields.midDescCstor)"); env->DeleteLocalRef(ret); - return NULL;; + return NULL; } env->SetObjectArrayElement(ret, i, jdesc); |