diff options
author | Jean-Michel Trivi <jmtrivi@google.com> | 2009-07-17 12:05:31 -0700 |
---|---|---|
committer | Jean-Michel Trivi <jmtrivi@google.com> | 2009-07-17 12:05:31 -0700 |
commit | 4bac5a3928d57ac193141eb6d45f3b39200d27de (patch) | |
tree | bd31b01a276746d5ee3fd6922a03ef1a158cca33 /core/jni | |
parent | 19e53f7ae506ccb294f46a36c70d7f3154b258ad (diff) | |
download | frameworks_base-4bac5a3928d57ac193141eb6d45f3b39200d27de.zip frameworks_base-4bac5a3928d57ac193141eb6d45f3b39200d27de.tar.gz frameworks_base-4bac5a3928d57ac193141eb6d45f3b39200d27de.tar.bz2 |
Fix global ref leak in android.media.AudioRecord. Delete global refs
to the native AudioRecord pointer and the callback cookie (for native
to Java calls) in the finalize() function and when an error occurs
during the allocation of the native resources.
Diffstat (limited to 'core/jni')
-rw-r--r-- | core/jni/android_media_AudioRecord.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/core/jni/android_media_AudioRecord.cpp b/core/jni/android_media_AudioRecord.cpp index e71e348..44a9e8c 100644 --- a/core/jni/android_media_AudioRecord.cpp +++ b/core/jni/android_media_AudioRecord.cpp @@ -212,8 +212,10 @@ android_media_AudioRecord_setup(JNIEnv *env, jobject thiz, jobject weak_this, // failure: native_init_failure: + env->DeleteGlobalRef(lpCallbackData->audioRecord_class); + env->DeleteGlobalRef(lpCallbackData->audioRecord_ref); delete lpCallbackData; - + native_track_failure: delete lpRecorder; @@ -274,6 +276,8 @@ static void android_media_AudioRecord_finalize(JNIEnv *env, jobject thiz) { thiz, javaAudioRecordFields.nativeCallbackCookie); if (lpCookie) { LOGV("deleting lpCookie: %x\n", (int)lpCookie); + env->DeleteGlobalRef(lpCookie->audioRecord_class); + env->DeleteGlobalRef(lpCookie->audioRecord_ref); delete lpCookie; } |