fix slicing crash in do_completion (#28820)

Release Notes:

- N/A
This commit is contained in:
João Marcos 2025-04-15 20:37:37 -03:00 committed by GitHub
parent 68ec1d724c
commit 3f4d4af080
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -4737,8 +4737,8 @@ impl Editor {
let lookahead = replace_range
.end
.saturating_sub(newest_anchor.end.text_anchor.to_offset(buffer));
let prefix = &old_text[..old_text.len() - lookahead];
let suffix = &old_text[lookbehind..];
let prefix = &old_text[..old_text.len().saturating_sub(lookahead)];
let suffix = &old_text[lookbehind.min(old_text.len())..];
let selections = self.selections.all::<usize>(cx);
let mut edits = Vec::new();
@ -4753,7 +4753,7 @@ impl Editor {
// if prefix is present, don't duplicate it
if snapshot.contains_str_at(range.start.saturating_sub(lookbehind), prefix) {
text = &new_text[lookbehind..];
text = &new_text[lookbehind.min(new_text.len())..];
// if suffix is also present, mimic the newest cursor and replace it
if selection.id != newest_anchor.id