Fix memory leaks

These are `new`ed, but never passed to anything else. It looks like
simply stack allocating will do what we want here.

Caught by our static analyzer:

frameworks/av/media/libmediaplayer2/MediaPlayer2AudioOutput.cpp:524:5:
warning: Potential memory leak [clang-analyzer-cplusplus.NewDeleteLeaks]
frameworks/av/media/libmediaplayer2/MediaPlayer2AudioOutput.cpp:527:9:
warning: Potential memory leak [clang-analyzer-cplusplus.NewDeleteLeaks]
frameworks/av/media/libmediaplayer2/MediaPlayer2AudioOutput.cpp:529:9:
warning: Potential memory leak [clang-analyzer-cplusplus.NewDeleteLeaks]

Bug: None
Test: Ran the analyer again. It was happy.
Change-Id: I8f4cda4a5993f43ad50cf5a0d152ed7158d7c8e1
gugelfrei
George Burgess IV 5 years ago
parent 0428b8e5a5
commit 39f4bc12d0

@ -521,12 +521,15 @@ jobject MediaPlayer2AudioOutput::getRoutedDevice() {
status_t MediaPlayer2AudioOutput::addAudioDeviceCallback(jobject jRoutingDelegate) {
ALOGV("addAudioDeviceCallback");
Mutex::Autolock lock(mLock);
jobject listener = (new JObjectHolder(
JAudioTrack::getListener(jRoutingDelegate)))->getJObject();
JObjectHolder listenerHolder{JAudioTrack::getListener(jRoutingDelegate)};
jobject listener = listenerHolder.getJObject();
if (JAudioTrack::findByKey(mRoutingDelegates, listener) == nullptr) {
jobject handler = (new JObjectHolder(
JAudioTrack::getHandler(jRoutingDelegate)))->getJObject();
jobject routingDelegate = (new JObjectHolder(jRoutingDelegate))->getJObject();
JObjectHolder handlerHolder{JAudioTrack::getHandler(jRoutingDelegate)};
jobject handler = handlerHolder.getJObject();
JObjectHolder routingDelegateHolder = JObjectHolder(jRoutingDelegate);
jobject routingDelegate = routingDelegateHolder.getJObject();
mRoutingDelegates.push_back(std::pair<jobject, jobject>(listener, routingDelegate));
if (mJAudioTrack != nullptr) {
return mJAudioTrack->addAudioDeviceCallback(routingDelegate, handler);

Loading…
Cancel
Save