From 47a0ecb3b8196323c1b8e187acbe88a986b0d2ee Mon Sep 17 00:00:00 2001 From: Jorge Martin Espinosa Date: Thu, 31 Aug 2023 12:58:37 +0200 Subject: [PATCH] Protect `TimelineItemAspectRatioBox` against `Float.NaN` (#1201) * Protect `TimelineItemAspectRatioBox` against infinite values. --- changelog.d/1995.bugfix | 1 + .../factories/event/TimelineItemContentMessageFactory.kt | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) create mode 100644 changelog.d/1995.bugfix diff --git a/changelog.d/1995.bugfix b/changelog.d/1995.bugfix new file mode 100644 index 0000000000..acec25add0 --- /dev/null +++ b/changelog.d/1995.bugfix @@ -0,0 +1 @@ +Crash with `aspectRatio` modifier when `Float.NaN` was used as input. diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/factories/event/TimelineItemContentMessageFactory.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/factories/event/TimelineItemContentMessageFactory.kt index 9da31ee6a7..040969e092 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/factories/event/TimelineItemContentMessageFactory.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/factories/event/TimelineItemContentMessageFactory.kt @@ -132,10 +132,12 @@ class TimelineItemContentMessageFactory @Inject constructor( } private fun aspectRatioOf(width: Long?, height: Long?): Float? { - return if (height != null && width != null) { + val result = if (height != null && width != null) { width.toFloat() / height.toFloat() } else { null } + + return result?.takeIf { it.isFinite() } } }