diff options
Diffstat (limited to 'media/jni/android_mtp_MtpDatabase.cpp')
-rw-r--r-- | media/jni/android_mtp_MtpDatabase.cpp | 30 |
1 files changed, 18 insertions, 12 deletions
diff --git a/media/jni/android_mtp_MtpDatabase.cpp b/media/jni/android_mtp_MtpDatabase.cpp index 56b85b5167f5..06a7182e4b1d 100644 --- a/media/jni/android_mtp_MtpDatabase.cpp +++ b/media/jni/android_mtp_MtpDatabase.cpp @@ -708,6 +708,24 @@ MtpResponseCode MtpDatabase::getObjectPropertyList(MtpObjectHandle handle, int type = dataTypes[i]; packet.putUInt16(type); + if (type == MTP_TYPE_STR) { + jstring value = (jstring)env->GetObjectArrayElement(stringValuesArray, i); + const char *valueStr = (value ? env->GetStringUTFChars(value, NULL) : NULL); + if (valueStr) { + packet.putString(valueStr); + env->ReleaseStringUTFChars(value, valueStr); + } else { + packet.putEmptyString(); + } + env->DeleteLocalRef(value); + continue; + } + + if (!longValues) { + ALOGE("bad longValuesArray value in MyMtpDatabase::getObjectPropertyList"); + continue; + } + switch (type) { case MTP_TYPE_INT8: packet.putInt8(longValues[i]); @@ -739,18 +757,6 @@ MtpResponseCode MtpDatabase::getObjectPropertyList(MtpObjectHandle handle, case MTP_TYPE_UINT128: packet.putUInt128(longValues[i]); break; - case MTP_TYPE_STR: { - jstring value = (jstring)env->GetObjectArrayElement(stringValuesArray, i); - const char *valueStr = (value ? env->GetStringUTFChars(value, NULL) : NULL); - if (valueStr) { - packet.putString(valueStr); - env->ReleaseStringUTFChars(value, valueStr); - } else { - packet.putEmptyString(); - } - env->DeleteLocalRef(value); - break; - } default: ALOGE("bad or unsupported data type in MtpDatabase::getObjectPropertyList"); break; |