From 705839068ac6e458b54eb63c37c02d072f5da93d Mon Sep 17 00:00:00 2001 From: Cody Henthorne Date: Wed, 29 Sep 2021 12:12:32 -0400 Subject: [PATCH] Fix crash when forwarding unknown media types. --- .../securesms/mms/SlideFactory.java | 21 +++++++++++-------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/mms/SlideFactory.java b/app/src/main/java/org/thoughtcrime/securesms/mms/SlideFactory.java index 5d4822bf2..ef6e366b3 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/mms/SlideFactory.java +++ b/app/src/main/java/org/thoughtcrime/securesms/mms/SlideFactory.java @@ -58,13 +58,10 @@ public final class SlideFactory { } } - private static @Nullable Slide getContentResolverSlideInfo(@NonNull Context context, @NonNull MediaType mediaType, @NonNull Uri uri, int width, int height) { - Cursor cursor = null; - long start = System.currentTimeMillis(); - - try { - cursor = context.getContentResolver().query(uri, null, null, null, null); + private static @Nullable Slide getContentResolverSlideInfo(@NonNull Context context, @Nullable MediaType mediaType, @NonNull Uri uri, int width, int height) { + long start = System.currentTimeMillis(); + try (Cursor cursor = context.getContentResolver().query(uri, null, null, null, null)) { if (cursor != null && cursor.moveToFirst()) { String fileName = cursor.getString(cursor.getColumnIndexOrThrow(OpenableColumns.DISPLAY_NAME)); long fileSize = cursor.getLong(cursor.getColumnIndexOrThrow(OpenableColumns.SIZE)); @@ -76,17 +73,19 @@ public final class SlideFactory { height = dimens.second; } + if (mediaType == null) { + mediaType = MediaType.DOCUMENT; + } + Log.d(TAG, "remote slide with size " + fileSize + " took " + (System.currentTimeMillis() - start) + "ms"); return mediaType.createSlide(context, uri, fileName, mimeType, null, fileSize, width, height, false); } - } finally { - if (cursor != null) cursor.close(); } return null; } - private static @NonNull Slide getManuallyCalculatedSlideInfo(@NonNull Context context, @NonNull MediaType mediaType, @NonNull Uri uri, int width, int height) throws IOException { + private static @NonNull Slide getManuallyCalculatedSlideInfo(@NonNull Context context, @Nullable MediaType mediaType, @NonNull Uri uri, int width, int height) throws IOException { long start = System.currentTimeMillis(); Long mediaSize = null; String fileName = null; @@ -114,6 +113,10 @@ public final class SlideFactory { height = dimens.second; } + if (mediaType == null) { + mediaType = MediaType.DOCUMENT; + } + Log.d(TAG, "local slide with size " + mediaSize + " took " + (System.currentTimeMillis() - start) + "ms"); return mediaType.createSlide(context, uri, fileName, mimeType, null, mediaSize, width, height, gif); }