From 66201c6e58f4133f3a80197525b5a2ab37437796 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Mon, 8 Jan 2024 11:26:50 +0100 Subject: [PATCH 1/2] Do not use sublist as it crashes if `index > items.count()`. Using range is safer. Fix https://github.com/element-hq/element-x-android-rageshakes/issues/1301 --- .../features/messages/impl/timeline/TimelinePresenter.kt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelinePresenter.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelinePresenter.kt index 37d2d7d2a6..aff187d233 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelinePresenter.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelinePresenter.kt @@ -247,7 +247,8 @@ class TimelinePresenter @AssistedInject constructor( } private fun getLastEventIdBeforeOrAt(index: Int, items: ImmutableList): EventId? { - for (item in items.subList(index, items.count())) { + for (i in index..items.count()) { + val item = items[i] if (item is TimelineItem.Event) { return item.eventId } From a424cb0a6aecd23378a83f2a4e434d3ef3169332 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Mon, 8 Jan 2024 11:41:29 +0100 Subject: [PATCH 2/2] exclude `items.count()`, which is not a valid index for the list. --- .../features/messages/impl/timeline/TimelinePresenter.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelinePresenter.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelinePresenter.kt index aff187d233..31e36e86f9 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelinePresenter.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/TimelinePresenter.kt @@ -247,7 +247,7 @@ class TimelinePresenter @AssistedInject constructor( } private fun getLastEventIdBeforeOrAt(index: Int, items: ImmutableList): EventId? { - for (i in index..items.count()) { + for (i in index until items.count()) { val item = items[i] if (item is TimelineItem.Event) { return item.eventId