diff --git a/core/jni/android_media_AudioRecord.cpp b/core/jni/android_media_AudioRecord.cpp index 5928c69f1181f..6c2bbd45ea517 100644 --- a/core/jni/android_media_AudioRecord.cpp +++ b/core/jni/android_media_AudioRecord.cpp @@ -321,6 +321,7 @@ native_init_failure: delete lpCallbackData; env->SetLongField(thiz, javaAudioRecordFields.nativeCallbackCookie, 0); + // lpRecorder goes out of scope, so reference count drops to zero return (jint) AUDIORECORD_ERROR_SETUP_NATIVEINITFAILED; } diff --git a/core/jni/android_media_AudioTrack.cpp b/core/jni/android_media_AudioTrack.cpp index 5b52a49bc5208..5faa15008359b 100644 --- a/core/jni/android_media_AudioTrack.cpp +++ b/core/jni/android_media_AudioTrack.cpp @@ -405,6 +405,7 @@ native_init_failure: delete lpJniStorage; env->SetLongField(thiz, javaAudioTrackFields.jniData, 0); + // lpTrack goes out of scope, so reference count drops to zero return (jint) AUDIOTRACK_ERROR_SETUP_NATIVEINITFAILED; } diff --git a/media/jni/soundpool/SoundPool.cpp b/media/jni/soundpool/SoundPool.cpp index 8038cdf322634..a705bcc374065 100644 --- a/media/jni/soundpool/SoundPool.cpp +++ b/media/jni/soundpool/SoundPool.cpp @@ -753,6 +753,7 @@ void SoundChannel::play(const sp& sample, int nextChannelID, float leftV status = newTrack->initCheck(); if (status != NO_ERROR) { ALOGE("Error creating AudioTrack"); + // newTrack goes out of scope, so reference count drops to zero goto exit; } // From now on, AudioTrack callbacks received with previous toggle value will be ignored.