From 17a24c58bb2e86719f003c80f682beb66803f24d Mon Sep 17 00:00:00 2001 From: Martin Blumenstingl Date: Sat, 31 May 2014 15:50:38 +0200 Subject: MtpDatabase JNI: Fixed a memory-leak in getObjectPropertyValue(). The jstring "stringValue" was not never freed. In the case where "str" was NULL the whole cleanup part (see "goto out") was even skipped. This patch makes getObjectPropertyValue() behave like getObjectPropertyList(). Change-Id: I5a7ec3611036f5253a054b00064999bcd1d1c29e --- media/jni/android_mtp_MtpDatabase.cpp | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/media/jni/android_mtp_MtpDatabase.cpp b/media/jni/android_mtp_MtpDatabase.cpp index 8129c0dfe711..270ab5988f9e 100644 --- a/media/jni/android_mtp_MtpDatabase.cpp +++ b/media/jni/android_mtp_MtpDatabase.cpp @@ -428,16 +428,14 @@ MtpResponseCode MyMtpDatabase::getObjectPropertyValue(MtpObjectHandle handle, case MTP_TYPE_STR: { jstring stringValue = (jstring)env->GetObjectArrayElement(stringValuesArray, 0); + const char* str = (stringValue ? env->GetStringUTFChars(stringValue, NULL) : NULL); if (stringValue) { - const char* str = env->GetStringUTFChars(stringValue, NULL); - if (str == NULL) { - return MTP_RESPONSE_GENERAL_ERROR; - } packet.putString(str); env->ReleaseStringUTFChars(stringValue, str); } else { packet.putEmptyString(); } + env->DeleteLocalRef(stringValue); break; } default: -- cgit v1.2.3-59-g8ed1b