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 extends AbstractList { @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) + */ } }