Fixes potential range out of bounds bug. (#211152)

Signed-off-by: Henning Dieterichs <hdieterichs@microsoft.com>
This commit is contained in:
Henning Dieterichs 2024-04-24 01:22:26 +02:00 committed by GitHub
parent bc42333eb6
commit 6d23b7f11a
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -54,12 +54,12 @@ import { ILabelService } from 'vs/platform/label/common/label';
import { renderFormattedText } from 'vs/base/browser/formattedTextRenderer';
import { IOpenerService } from 'vs/platform/opener/common/opener';
import { IChatResponseModel, IChatTextEditGroup } from 'vs/workbench/contrib/chat/common/chatModel';
import { EditOperation, ISingleEditOperation } from 'vs/editor/common/core/editOperation';
import { TextEdit } from 'vs/editor/common/languages';
import { ICodeEditorService } from 'vs/editor/browser/services/codeEditorService';
import { isEqual } from 'vs/base/common/resources';
import { DefaultModelSHA1Computer } from 'vs/editor/common/services/modelService';
import { IDialogService } from 'vs/platform/dialogs/common/dialogs';
import { TextModelText } from 'vs/editor/common/model/textModelText';
const $ = dom.$;
@ -820,12 +820,8 @@ export class DefaultChatTextEditor {
return 0;
}
const edits: ISingleEditOperation[] = [];
for (const item of diff.changes2) {
const range = item.original.toExclusiveRange();
const newText = model.modified.getValueInRange(item.modified.toExclusiveRange());
edits.push(EditOperation.replace(range, newText));
}
const modified = new TextModelText(model.modified);
const edits = diff.changes2.map(i => i.toRangeMapping().toTextEdit(modified).toSingleEditOperation());
model.original.pushStackElement();
model.original.pushEditOperations(null, edits, () => null);