IMEStateData // Prevent cursors from being out of bounds.

This commit is contained in:
ShikiSuen 2023-03-25 20:06:57 +08:00
parent 421268e620
commit 650dbc13c8
1 changed files with 4 additions and 2 deletions

View File

@ -62,11 +62,13 @@ public struct IMEStateData: IMEStateDataProtocol {
/// Swift.utf16NSString.length()
///
public var u16Cursor: Int {
displayedText.map(\.description)[0 ..< cursor].joined().utf16.count
let upperBound = max(0, min(cursor, displayedText.count))
return displayedText.map(\.description)[0 ..< upperBound].joined().utf16.count
}
public var u16Marker: Int {
displayedText.map(\.description)[0 ..< marker].joined().utf16.count
let upperBound = max(0, min(marker, displayedText.count))
return displayedText.map(\.description)[0 ..< upperBound].joined().utf16.count
}
public var u16MarkedRange: Range<Int> {