Browse Source

Merge pull request #1904 from nextcloud/uploadsStorageManagerNPE

Uploads storage manager: prevent NPE
Tobias Kaminsky 7 years ago
parent
commit
a4db68404f
1 changed files with 28 additions and 16 deletions
  1. 28 16
      src/main/java/com/owncloud/android/datamodel/UploadsStorageManager.java

+ 28 - 16
src/main/java/com/owncloud/android/datamodel/UploadsStorageManager.java

@@ -228,13 +228,18 @@ public class UploadsStorageManager extends Observable {
                 null
         );
 
-        if (c.getCount() != 1) {
-            Log_OC.e(TAG, c.getCount() + " items for id=" + id
-                    + " available in UploadDb. Expected 1. Failed to update upload db.");
+        if (c != null) {
+            if (c.getCount() != 1) {
+                Log_OC.e(TAG, c.getCount() + " items for id=" + id
+                        + " available in UploadDb. Expected 1. Failed to update upload db.");
+            } else {
+                returnValue = updateUploadInternal(c, status, result, remotePath, localPath);
+            }
+            c.close();
         } else {
-            returnValue = updateUploadInternal(c, status, result, remotePath, localPath);
+            Log_OC.e(TAG, "Cursor is null");
         }
-        c.close();
+        
         return returnValue;
     }
 
@@ -317,6 +322,8 @@ public class UploadsStorageManager extends Observable {
 
 
     private OCUpload[] getUploads(String selection, String[] selectionArgs) {
+        OCUpload[] list;
+
         Cursor c = getDB().query(
                 ProviderTableMeta.CONTENT_URI_UPLOADS,
                 null,
@@ -324,19 +331,24 @@ public class UploadsStorageManager extends Observable {
                 selectionArgs,
                 null
         );
-        OCUpload[] list = new OCUpload[c.getCount()];
-        if (c.moveToFirst()) {
-            do {
-                OCUpload upload = createOCUploadFromCursor(c);
-                if (upload == null) {
-                    Log_OC.e(TAG, "OCUpload could not be created from cursor");
-                } else {
-                    list[c.getPosition()] = upload;
-                }
-            } while (c.moveToNext());
 
+        if (c != null) {
+            list = new OCUpload[c.getCount()];
+
+            if (c.moveToFirst()) {
+                do {
+                    OCUpload upload = createOCUploadFromCursor(c);
+                    if (upload == null) {
+                        Log_OC.e(TAG, "OCUpload could not be created from cursor");
+                    } else {
+                        list[c.getPosition()] = upload;
+                    }
+                } while (c.moveToNext());
+            }
+            c.close();
+        } else {
+            list = new OCUpload[0];
         }
-        c.close();
 
         return list;
     }