From bd915cdd7f2dd2fe1a945ba1ba1e96e0aea6aeff Mon Sep 17 00:00:00 2001 From: Rashad Sookram Date: Tue, 1 Mar 2022 09:43:01 -0500 Subject: [PATCH] Fix crash from using a closed Cursor. The call to setActive was causing the cursor held by the ViewModel to be used, which hadn't been updated yet. --- .../securesms/MediaPreviewActivity.java | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/MediaPreviewActivity.java b/app/src/main/java/org/thoughtcrime/securesms/MediaPreviewActivity.java index 688905d7a..993edddc7 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/MediaPreviewActivity.java +++ b/app/src/main/java/org/thoughtcrime/securesms/MediaPreviewActivity.java @@ -553,6 +553,8 @@ public final class MediaPreviewActivity extends PassphraseRequiredActivity } cursor = Objects.requireNonNull(data.first); + viewModel.setCursor(this, cursor, leftIsRecent); + int mediaPosition = Objects.requireNonNull(data.second); CursorPagerAdapter oldAdapter = (CursorPagerAdapter) mediaPager.getAdapter(); @@ -565,13 +567,13 @@ public final class MediaPreviewActivity extends PassphraseRequiredActivity oldAdapter.setActive(true); } - viewModel.setCursor(this, cursor, leftIsRecent); + if (oldAdapter == null || restartItem >= 0) { + int item = restartItem >= 0 ? restartItem : mediaPosition; + mediaPager.setCurrentItem(item); - int item = restartItem >= 0 ? restartItem : mediaPosition; - mediaPager.setCurrentItem(item); - - if (item == 0) { - viewPagerListener.onPageSelected(0); + if (item == 0) { + viewPagerListener.onPageSelected(0); + } } } else { mediaNotAvailable();