diff options
Diffstat (limited to 'media/jni/android_mtp_MtpServer.cpp')
| -rw-r--r-- | media/jni/android_mtp_MtpServer.cpp | 23 |
1 files changed, 13 insertions, 10 deletions
diff --git a/media/jni/android_mtp_MtpServer.cpp b/media/jni/android_mtp_MtpServer.cpp index 4f6bb15..4d84cb7 100644 --- a/media/jni/android_mtp_MtpServer.cpp +++ b/media/jni/android_mtp_MtpServer.cpp @@ -98,7 +98,7 @@ public: void removeStorage(MtpStorageID id) { MtpStorage* storage = mServer->getStorage(id); if (storage) { - for (int i = 0; i < mStorageList.size(); i++) { + for (size_t i = 0; i < mStorageList.size(); i++) { if (mStorageList[i] == storage) { mStorageList.removeAt(i); break; @@ -123,7 +123,7 @@ public: (mUsePtp ? MTP_INTERFACE_MODE_PTP : MTP_INTERFACE_MODE_MTP)); mServer = new MtpServer(mFd, mDatabase, AID_MEDIA_RW, 0664, 0775); - for (int i = 0; i < mStorageList.size(); i++) { + for (size_t i = 0; i < mStorageList.size(); i++) { mServer->addStorage(mStorageList[i]); } } else { @@ -249,14 +249,17 @@ android_mtp_MtpServer_add_storage(JNIEnv *env, jobject thiz, jobject jstorage) jboolean removable = env->GetBooleanField(jstorage, field_MtpStorage_removable); const char *pathStr = env->GetStringUTFChars(path, NULL); - const char *descriptionStr = env->GetStringUTFChars(description, NULL); - - MtpStorage* storage = new MtpStorage(storageID, pathStr, descriptionStr, - reserveSpace, removable); - thread->addStorage(storage); - - env->ReleaseStringUTFChars(path, pathStr); - env->ReleaseStringUTFChars(description, descriptionStr); + if (pathStr != NULL) { + const char *descriptionStr = env->GetStringUTFChars(description, NULL); + if (descriptionStr != NULL) { + MtpStorage* storage = new MtpStorage(storageID, pathStr, descriptionStr, reserveSpace, removable); + thread->addStorage(storage); + env->ReleaseStringUTFChars(path, pathStr); + env->ReleaseStringUTFChars(description, descriptionStr); + } else { + env->ReleaseStringUTFChars(path, pathStr); + } + } } else { LOGE("MtpThread is null in add_storage"); } |
