summaryrefslogtreecommitdiffstats
path: root/media/jni/android_mtp_MtpDatabase.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'media/jni/android_mtp_MtpDatabase.cpp')
-rw-r--r--media/jni/android_mtp_MtpDatabase.cpp34
1 files changed, 16 insertions, 18 deletions
diff --git a/media/jni/android_mtp_MtpDatabase.cpp b/media/jni/android_mtp_MtpDatabase.cpp
index b78af44..0f3c063 100644
--- a/media/jni/android_mtp_MtpDatabase.cpp
+++ b/media/jni/android_mtp_MtpDatabase.cpp
@@ -189,28 +189,23 @@ MyMtpDatabase::MyMtpDatabase(JNIEnv *env, jobject client)
mLongBuffer(NULL),
mStringBuffer(NULL)
{
- jintArray intArray;
- jlongArray longArray;
- jcharArray charArray;
-
// create buffers for out arguments
// we don't need to be thread-safe so this is OK
- intArray = env->NewIntArray(3);
- if (!intArray)
- goto out_of_memory;
+ jintArray intArray = env->NewIntArray(3);
+ if (!intArray) {
+ return; // Already threw.
+ }
mIntBuffer = (jintArray)env->NewGlobalRef(intArray);
- longArray = env->NewLongArray(2);
- if (!longArray)
- goto out_of_memory;
+ jlongArray longArray = env->NewLongArray(2);
+ if (!longArray) {
+ return; // Already threw.
+ }
mLongBuffer = (jlongArray)env->NewGlobalRef(longArray);
- charArray = env->NewCharArray(256);
- if (!charArray)
- goto out_of_memory;
+ jcharArray charArray = env->NewCharArray(256);
+ if (!charArray) {
+ return; // Already threw.
+ }
mStringBuffer = (jcharArray)env->NewGlobalRef(charArray);
- return;
-
-out_of_memory:
- env->ThrowNew(env->FindClass("java/lang/OutOfMemoryError"), NULL);
}
void MyMtpDatabase::cleanup(JNIEnv *env) {
@@ -434,6 +429,9 @@ MtpResponseCode MyMtpDatabase::getObjectPropertyValue(MtpObjectHandle handle,
jstring stringValue = (jstring)env->GetObjectArrayElement(stringValuesArray, 0);
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 {
@@ -865,7 +863,7 @@ MtpResponseCode MyMtpDatabase::getObjectFilePath(MtpObjectHandle handle,
outFileLength = longValues[0];
outFormat = longValues[1];
env->ReleaseLongArrayElements(mLongBuffer, longValues, 0);
-
+
checkAndClearExceptionFromCallback(env, __FUNCTION__);
return result;
}