From 1822d216763b92b563179e2a68c0c2bbb2020870 Mon Sep 17 00:00:00 2001 From: Stypox Date: Tue, 27 Jul 2021 11:36:14 +0200 Subject: [PATCH 1/2] Fix NullPointerException when checking if storage exists --- .../java/org/schabi/newpipe/streams/io/StoredFileHelper.java | 2 +- app/src/main/java/us/shandian/giga/get/DownloadMission.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/streams/io/StoredFileHelper.java b/app/src/main/java/org/schabi/newpipe/streams/io/StoredFileHelper.java index c86164ed2e5..3ec64873092 100644 --- a/app/src/main/java/org/schabi/newpipe/streams/io/StoredFileHelper.java +++ b/app/src/main/java/org/schabi/newpipe/streams/io/StoredFileHelper.java @@ -285,7 +285,7 @@ public String getTag() { } public boolean existsAsFile() { - if (source == null) { + if (source == null || (docFile == null && ioFile == null)) { return false; } diff --git a/app/src/main/java/us/shandian/giga/get/DownloadMission.java b/app/src/main/java/us/shandian/giga/get/DownloadMission.java index 628058f5502..9d8eaf9a532 100644 --- a/app/src/main/java/us/shandian/giga/get/DownloadMission.java +++ b/app/src/main/java/us/shandian/giga/get/DownloadMission.java @@ -664,7 +664,7 @@ public void psContinue(boolean recover) { * @return {@code true}, if storage is invalid and cannot be used */ public boolean hasInvalidStorage() { - return errCode == ERROR_PROGRESS_LOST || storage == null || storage.isInvalid() || !storage.existsAsFile(); + return errCode == ERROR_PROGRESS_LOST || storage == null || !storage.existsAsFile(); } /** From 2aebf6ceaf063469c3b60c04d9522c7bc7144094 Mon Sep 17 00:00:00 2001 From: Stypox Date: Tue, 27 Jul 2021 17:56:41 +0200 Subject: [PATCH 2/2] Add log when existsAsFile() is called on an invalid StoredFileHelper --- .../schabi/newpipe/streams/io/StoredFileHelper.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/app/src/main/java/org/schabi/newpipe/streams/io/StoredFileHelper.java b/app/src/main/java/org/schabi/newpipe/streams/io/StoredFileHelper.java index 3ec64873092..dd379b73044 100644 --- a/app/src/main/java/org/schabi/newpipe/streams/io/StoredFileHelper.java +++ b/app/src/main/java/org/schabi/newpipe/streams/io/StoredFileHelper.java @@ -8,6 +8,7 @@ import android.os.Build; import android.os.Environment; import android.provider.DocumentsContract; +import android.util.Log; import androidx.annotation.NonNull; import androidx.annotation.Nullable; @@ -15,6 +16,7 @@ import com.nononsenseapps.filepicker.Utils; +import org.schabi.newpipe.MainActivity; import org.schabi.newpipe.settings.NewPipeSettings; import org.schabi.newpipe.util.FilePickerActivityHelper; @@ -27,6 +29,9 @@ import us.shandian.giga.io.FileStreamSAF; public class StoredFileHelper implements Serializable { + private static final boolean DEBUG = MainActivity.DEBUG; + private static final String TAG = StoredFileHelper.class.getSimpleName(); + private static final long serialVersionUID = 0L; public static final String DEFAULT_MIME = "application/octet-stream"; @@ -286,6 +291,12 @@ public String getTag() { public boolean existsAsFile() { if (source == null || (docFile == null && ioFile == null)) { + if (DEBUG) { + Log.d(TAG, "existsAsFile called but something is null: source = [" + + (source == null ? "null => storage is invalid" : source) + + "], docFile = [" + (docFile == null ? "null" : docFile) + + "], ioFile = [" + (ioFile == null ? "null" : ioFile) + "]"); + } return false; }