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