From e485264ff59612cc3235affa623b09a532891c7b Mon Sep 17 00:00:00 2001 From: George Burgess IV Date: Mon, 19 Jul 2021 07:43:00 +0000 Subject: [PATCH] MTP: fix a memory leak We unconditionally leak every instance that we `new` of this. Move it to the stack to fix this, since it doesn't need to be on the heap. Bug: 188752500 Test: TreeHugger Change-Id: I24ed3bb29c5a6912398a9e00e7748fd406cf6a62 --- media/jni/android_mtp_MtpDevice.cpp | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/media/jni/android_mtp_MtpDevice.cpp b/media/jni/android_mtp_MtpDevice.cpp index ac89fecd91509..8436ba412b2d4 100644 --- a/media/jni/android_mtp_MtpDevice.cpp +++ b/media/jni/android_mtp_MtpDevice.cpp @@ -416,20 +416,14 @@ android_mtp_MtpDevice_set_device_property_init_version(JNIEnv *env, jobject thiz return -1; } - MtpProperty* property = new MtpProperty(MTP_DEVICE_PROPERTY_SESSION_INITIATOR_VERSION_INFO, - MTP_TYPE_STR, true); - if (!property) { - env->ThrowNew(clazz_io_exception, "Failed to obtain property."); - return -1; - } - - if (property->getDataType() != MTP_TYPE_STR) { + MtpProperty property(MTP_DEVICE_PROPERTY_SESSION_INITIATOR_VERSION_INFO, MTP_TYPE_STR, true); + if (property.getDataType() != MTP_TYPE_STR) { env->ThrowNew(clazz_io_exception, "Unexpected property data type."); return -1; } - property->setCurrentValue(propertyStr); - if (!device->setDevicePropValueStr(property)) { + property.setCurrentValue(propertyStr); + if (!device->setDevicePropValueStr(&property)) { env->ThrowNew(clazz_io_exception, "Failed to obtain property value."); return -1; }