Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
buffer: Fix panic when multi-byte character is used in languages like…
… Swift (#25739) Closes #25471 In languages like Swift, names can be concatinated in form like `class Example: UI`, notice here `Example` and `:` are two different words. Before, `name_ranges`translation of above text would look like: ``` "class" -> [0..5] " Example" -> [5..13] (Spaces are intentional) "e:" -> [12..14] (This is incorrect, and should be ":" -> [13..14]) " UI" -> [14..16] ``` Because this translation does not account for concatinated words, this might affect queries, but most importantly this panics when multi-byte character (`ф`) is used in place of `e`, as it then tries to access index which lies inside that multi-byte. For example, it panics on `class Examplф: UI`. --- This PR fixes this by handing concatinated words when calculating `name_ranges`. Now, the corrected ranges will look like: ``` "class" -> [0..5] " Example" -> [5..13] ":" -> [13..14] (Now it's correct) " UI" -> [14..16] ``` and for multi-byte character ``` "class" -> [0..5] " Examplф" -> [5..14] (Notice ф takes two bytes) ":" -> [14..15] " UI" -> [15..17] ``` This way, it no longer tries to access a previous index, preventing a panic when that index contains a multi-byte character. Release Notes: - Fixed a panic when Cyrillic characters are used in languages like Swift.
- Loading branch information