Fix theoretical memory leak in mConfigEvents
Change-Id: I137f70676c8919661e716c33e0dd9c25c2b6285c
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()
{
+ // 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 @@
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,