Skip to content

Commit 2eb834d

Browse files
authored
Avoid registering disposables when Notebook Edit session is disposed (microsoft#258664)
1 parent 309328f commit 2eb834d

File tree

1 file changed

+18
-4
lines changed

1 file changed

+18
-4
lines changed

src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedNotebookEntry.ts

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -969,17 +969,31 @@ export class ChatEditingModifiedNotebookEntry extends AbstractChatEditingModifie
969969
if (!cell) {
970970
throw new Error('Cell not found');
971971
}
972-
const model = this.cellTextModelMap.get(cell.uri) || this._register(await this.textModelService.createModelReference(cell.uri)).object.textEditorModel;
973-
this.cellTextModelMap.set(cell.uri, model);
974-
return model;
972+
const model = this.cellTextModelMap.get(cell.uri);
973+
if (model) {
974+
this.cellTextModelMap.set(cell.uri, model);
975+
return model;
976+
} else {
977+
const textEditorModel = await this.textModelService.createModelReference(cell.uri);
978+
if (this._store.isDisposed) {
979+
textEditorModel.dispose();
980+
} else {
981+
this._register(textEditorModel);
982+
}
983+
const model = textEditorModel.object.textEditorModel;
984+
this.cellTextModelMap.set(cell.uri, model);
985+
return model;
986+
}
975987
}
976988

977989
getOrCreateModifiedTextFileEntryForCell(cell: NotebookCellTextModel, modifiedCellModel: ITextModel, originalCellModel: ITextModel): ChatEditingNotebookCellEntry | undefined {
978990
let cellEntry = this.cellEntryMap.get(cell.uri);
979991
if (cellEntry) {
980992
return cellEntry;
981993
}
982-
994+
if (this._store.isDisposed) {
995+
return;
996+
}
983997
const disposables = new DisposableStore();
984998
cellEntry = this._register(this._instantiationService.createInstance(ChatEditingNotebookCellEntry, this.modifiedResourceRef.object.resource, cell, modifiedCellModel, originalCellModel, disposables));
985999
this.cellEntryMap.set(cell.uri, cellEntry);

0 commit comments

Comments
 (0)