diff options
author | Glenn Kasten <gkasten@google.com> | 2013-07-17 09:08:51 -0700 |
---|---|---|
committer | Glenn Kasten <gkasten@google.com> | 2013-07-17 16:38:58 -0700 |
commit | c6ae3c8a261794fd4445e4e152d1ada074a3f92f (patch) | |
tree | c8f6493eb0a0f6af812ea5909096cf91818fce05 /services/audioflinger | |
parent | ee5e8d3e8dc61f8fb1fa725278d63802074c10c5 (diff) | |
download | frameworks_av-c6ae3c8a261794fd4445e4e152d1ada074a3f92f.zip frameworks_av-c6ae3c8a261794fd4445e4e152d1ada074a3f92f.tar.gz frameworks_av-c6ae3c8a261794fd4445e4e152d1ada074a3f92f.tar.bz2 |
Fix theoretical memory leak in mConfigEvents
Change-Id: I137f70676c8919661e716c33e0dd9c25c2b6285c
Diffstat (limited to 'services/audioflinger')
-rw-r--r-- | services/audioflinger/Threads.cpp | 6 | ||||
-rw-r--r-- | services/audioflinger/Threads.h | 1 |
2 files changed, 7 insertions, 0 deletions
diff --git a/services/audioflinger/Threads.cpp b/services/audioflinger/Threads.cpp index ef109af..d4cd0ea 100644 --- a/services/audioflinger/Threads.cpp +++ b/services/audioflinger/Threads.cpp @@ -282,6 +282,12 @@ AudioFlinger::ThreadBase::ThreadBase(const sp<AudioFlinger>& audioFlinger, audio AudioFlinger::ThreadBase::~ThreadBase() { + // mConfigEvents should be empty, but just in case it isn't, free the memory it owns + for (size_t i = 0; i < mConfigEvents.size(); i++) { + delete mConfigEvents[i]; + } + mConfigEvents.clear(); + mParamCond.broadcast(); // do not lock the mutex in destructor releaseWakeLock_l(); diff --git a/services/audioflinger/Threads.h b/services/audioflinger/Threads.h index e15d98a..365c790 100644 --- a/services/audioflinger/Threads.h +++ b/services/audioflinger/Threads.h @@ -290,6 +290,7 @@ protected: Vector<String8> mNewParameters; status_t mParamStatus; + // vector owns each ConfigEvent *, so must delete after removing Vector<ConfigEvent *> mConfigEvents; // These fields are written and read by thread itself without lock or barrier, |