Skip to content

Commit 6d23b7f

Browse files
authored
Fixes potential range out of bounds bug. (microsoft#211152)
Signed-off-by: Henning Dieterichs <[email protected]>
1 parent bc42333 commit 6d23b7f

File tree

1 file changed

+3
-7
lines changed

1 file changed

+3
-7
lines changed

src/vs/workbench/contrib/chat/browser/codeBlockPart.ts

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -54,12 +54,12 @@ import { ILabelService } from 'vs/platform/label/common/label';
5454
import { renderFormattedText } from 'vs/base/browser/formattedTextRenderer';
5555
import { IOpenerService } from 'vs/platform/opener/common/opener';
5656
import { IChatResponseModel, IChatTextEditGroup } from 'vs/workbench/contrib/chat/common/chatModel';
57-
import { EditOperation, ISingleEditOperation } from 'vs/editor/common/core/editOperation';
5857
import { TextEdit } from 'vs/editor/common/languages';
5958
import { ICodeEditorService } from 'vs/editor/browser/services/codeEditorService';
6059
import { isEqual } from 'vs/base/common/resources';
6160
import { DefaultModelSHA1Computer } from 'vs/editor/common/services/modelService';
6261
import { IDialogService } from 'vs/platform/dialogs/common/dialogs';
62+
import { TextModelText } from 'vs/editor/common/model/textModelText';
6363

6464
const $ = dom.$;
6565

@@ -820,12 +820,8 @@ export class DefaultChatTextEditor {
820820
return 0;
821821
}
822822

823-
const edits: ISingleEditOperation[] = [];
824-
for (const item of diff.changes2) {
825-
const range = item.original.toExclusiveRange();
826-
const newText = model.modified.getValueInRange(item.modified.toExclusiveRange());
827-
edits.push(EditOperation.replace(range, newText));
828-
}
823+
const modified = new TextModelText(model.modified);
824+
const edits = diff.changes2.map(i => i.toRangeMapping().toTextEdit(modified).toSingleEditOperation());
829825

830826
model.original.pushStackElement();
831827
model.original.pushEditOperations(null, edits, () => null);

0 commit comments

Comments
 (0)