fix slicing crash in `do_completion` (#28820)

João Marcos created

Release Notes:

- N/A

Change summary

crates/editor/src/editor.rs | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)

Detailed changes

crates/editor/src/editor.rs 🔗

@@ -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