From 9293ee6bc515e7645703d85d35015422de4b9afb Mon Sep 17 00:00:00 2001 From: Luthfi Tri Atmaja Date: Tue, 14 Apr 2026 19:27:46 +0700 Subject: [PATCH] fix(android): fix SelectedText boundary check and backward selection crash (#21182) --- .../Avalonia.Android/Platform/Input/TextEditBuffer.cs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/Android/Avalonia.Android/Platform/Input/TextEditBuffer.cs b/src/Android/Avalonia.Android/Platform/Input/TextEditBuffer.cs index e040687d6d..9cbefab24a 100644 --- a/src/Android/Avalonia.Android/Platform/Input/TextEditBuffer.cs +++ b/src/Android/Avalonia.Android/Platform/Input/TextEditBuffer.cs @@ -56,14 +56,19 @@ namespace Avalonia.Android.Platform.Input { get { - if(_textInputMethod.Client is not { } client || Selection.Start < 0 || Selection.End >= client.SurroundingText.Length) + var client = _textInputMethod.Client; + var text = client?.SurroundingText; + + if (string.IsNullOrEmpty(text)) { return ""; } var selection = Selection; + var start = Math.Max(0, selection.Start); + var end = Math.Min(text.Length, selection.End); - return client.SurroundingText.Substring(selection.Start, selection.End - selection.Start); + return start >= end ? "" : text.Substring(start, end - start); } }