From b82d1d1c51fc9a0cf5a871b8cfc069cca6328f78 Mon Sep 17 00:00:00 2001 From: Benny Huo Date: Thu, 15 Aug 2024 14:45:02 +0800 Subject: [PATCH] Fix kotlin.IndexOutOfBoundsException. Close a ComposeSceneLayer will also remove it from the container, thus making the layers modified while being iterated. Iterating the layers reversely may be the simplest fix since the removal always happens to the last element. --- .../kotlin/androidx/compose/ui/window/ComposeContainer.uikit.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/compose/ui/ui/src/uikitMain/kotlin/androidx/compose/ui/window/ComposeContainer.uikit.kt b/compose/ui/ui/src/uikitMain/kotlin/androidx/compose/ui/window/ComposeContainer.uikit.kt index 1a1ee79f4e475..9fb2e1d28ce72 100644 --- a/compose/ui/ui/src/uikitMain/kotlin/androidx/compose/ui/window/ComposeContainer.uikit.kt +++ b/compose/ui/ui/src/uikitMain/kotlin/androidx/compose/ui/window/ComposeContainer.uikit.kt @@ -384,7 +384,7 @@ internal class ComposeContainer( lifecycleOwner.dispose() mediator?.dispose() mediator = null - layers.fastForEach { + layers.fastForEachReversed { it.close() } }