Merge "Fix memory leaks"
diff --git a/media/libmediaplayer2/MediaPlayer2AudioOutput.cpp b/media/libmediaplayer2/MediaPlayer2AudioOutput.cpp
index 7c3063d..c1bfa25 100644
--- a/media/libmediaplayer2/MediaPlayer2AudioOutput.cpp
+++ b/media/libmediaplayer2/MediaPlayer2AudioOutput.cpp
@@ -521,12 +521,15 @@
 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);