1
0
Fork 0
mirror of https://github.com/M66B/FairEmail.git synced 2024-12-22 07:42:52 +00:00

Prevent crash

This commit is contained in:
M66B 2020-10-05 15:29:42 +02:00
parent 13e3722b7a
commit a9937508ca
2 changed files with 59 additions and 8 deletions

View file

@ -525,14 +525,26 @@ public abstract class PagedList<T> extends AbstractList<T> {
@SuppressWarnings("WeakerAccess") /* synthetic access */
void dispatchBoundaryCallbacks(boolean begin, boolean end) {
// safe to deref mBoundaryCallback here, since we only defer if mBoundaryCallback present
if (begin) {
//noinspection ConstantConditions
mBoundaryCallback.onItemAtFrontLoaded(mStorage.getFirstLoadedItem());
}
if (end) {
//noinspection ConstantConditions
mBoundaryCallback.onItemAtEndLoaded(mStorage.getLastLoadedItem());
try {
// safe to deref mBoundaryCallback here, since we only defer if mBoundaryCallback present
if (begin) {
//noinspection ConstantConditions
mBoundaryCallback.onItemAtFrontLoaded(mStorage.getFirstLoadedItem());
}
if (end) {
//noinspection ConstantConditions
mBoundaryCallback.onItemAtEndLoaded(mStorage.getLastLoadedItem());
}
} catch (Throwable ex) {
eu.faircode.email.Log.w(ex);
/*
java.lang.ArrayIndexOutOfBoundsException: length=0; index=-1
at java.util.ArrayList.get(ArrayList.java:439)
at androidx.paging.PagedStorage.getLastLoadedItem(SourceFile:361)
at androidx.paging.PagedList.dispatchBoundaryCallbacks(SourceFile:535)
at androidx.paging.PagedList.tryDispatchBoundaryCallbacks(SourceFile:522)
at androidx.paging.PagedList$1.run(SourceFile:487)
*/
}
}

39
patches/PagedList.patch Normal file
View file

@ -0,0 +1,39 @@
diff --git a/app/src/main/java/androidx/paging/PagedList.java b/app/src/main/java/androidx/paging/PagedList.java
index 1d4a184ef..19b8d5cca 100644
--- a/app/src/main/java/androidx/paging/PagedList.java
+++ b/app/src/main/java/androidx/paging/PagedList.java
@@ -525,14 +525,26 @@ public abstract class PagedList<T> extends AbstractList<T> {
@SuppressWarnings("WeakerAccess") /* synthetic access */
void dispatchBoundaryCallbacks(boolean begin, boolean end) {
- // safe to deref mBoundaryCallback here, since we only defer if mBoundaryCallback present
- if (begin) {
- //noinspection ConstantConditions
- mBoundaryCallback.onItemAtFrontLoaded(mStorage.getFirstLoadedItem());
- }
- if (end) {
- //noinspection ConstantConditions
- mBoundaryCallback.onItemAtEndLoaded(mStorage.getLastLoadedItem());
+ try {
+ // safe to deref mBoundaryCallback here, since we only defer if mBoundaryCallback present
+ if (begin) {
+ //noinspection ConstantConditions
+ mBoundaryCallback.onItemAtFrontLoaded(mStorage.getFirstLoadedItem());
+ }
+ if (end) {
+ //noinspection ConstantConditions
+ mBoundaryCallback.onItemAtEndLoaded(mStorage.getLastLoadedItem());
+ }
+ } catch (Throwable ex) {
+ eu.faircode.email.Log.w(ex);
+ /*
+ java.lang.ArrayIndexOutOfBoundsException: length=0; index=-1
+ at java.util.ArrayList.get(ArrayList.java:439)
+ at androidx.paging.PagedStorage.getLastLoadedItem(SourceFile:361)
+ at androidx.paging.PagedList.dispatchBoundaryCallbacks(SourceFile:535)
+ at androidx.paging.PagedList.tryDispatchBoundaryCallbacks(SourceFile:522)
+ at androidx.paging.PagedList$1.run(SourceFile:487)
+ */
}
}