Skip to content

Commit b71d2e5

Browse files
weratalexr00
andauthored
Fix memory leak in comments browser (microsoft#205162)
* Fix memory leak in comments browser * 💄 --------- Co-authored-by: Alex Ross <[email protected]>
1 parent fc18e59 commit b71d2e5

File tree

3 files changed

+15
-7
lines changed

3 files changed

+15
-7
lines changed

src/vs/workbench/contrib/comments/browser/commentNode.ts

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import * as dom from 'vs/base/browser/dom';
88
import * as languages from 'vs/editor/common/languages';
99
import { ActionsOrientation, ActionBar } from 'vs/base/browser/ui/actionbar/actionbar';
1010
import { Action, IActionRunner, IAction, Separator, ActionRunner } from 'vs/base/common/actions';
11-
import { Disposable, IDisposable } from 'vs/base/common/lifecycle';
11+
import { Disposable, IDisposable, dispose } from 'vs/base/common/lifecycle';
1212
import { URI } from 'vs/base/common/uri';
1313
import { ITextModel } from 'vs/editor/common/model';
1414
import { IModelService } from 'vs/editor/common/services/model';
@@ -576,12 +576,10 @@ export class CommentNode<T extends IRange | ICellRange> extends Disposable {
576576

577577
this._commentEditorModel?.dispose();
578578

579-
this._commentEditorDisposables.forEach(dispose => dispose.dispose());
579+
dispose(this._commentEditorDisposables);
580580
this._commentEditorDisposables = [];
581-
if (this._commentEditor) {
582-
this._commentEditor.dispose();
583-
this._commentEditor = null;
584-
}
581+
this._commentEditor?.dispose();
582+
this._commentEditor = null;
585583

586584
this._commentEditContainer!.remove();
587585
}
@@ -766,6 +764,11 @@ export class CommentNode<T extends IRange | ICellRange> extends Disposable {
766764
}, 3000);
767765
}
768766
}
767+
768+
override dispose(): void {
769+
super.dispose();
770+
dispose(this._commentEditorDisposables);
771+
}
769772
}
770773

771774
function fillInActions(groups: [string, Array<MenuItemAction | SubmenuItemAction>][], target: IAction[] | { primary: IAction[]; secondary: IAction[] }, useAlternativeActions: boolean, isPrimaryGroup: (group: string) => boolean = group => group === 'navigation'): void {

src/vs/workbench/contrib/comments/browser/commentReply.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import * as dom from 'vs/base/browser/dom';
77
import { MOUSE_CURSOR_TEXT_CSS_CLASS_NAME } from 'vs/base/browser/ui/mouseCursor/mouseCursor';
88
import { IAction } from 'vs/base/common/actions';
9-
import { Disposable, IDisposable } from 'vs/base/common/lifecycle';
9+
import { Disposable, IDisposable, dispose } from 'vs/base/common/lifecycle';
1010
import { MarshalledId } from 'vs/base/common/marshallingIds';
1111
import { URI } from 'vs/base/common/uri';
1212
import { generateUuid } from 'vs/base/common/uuid';
@@ -369,4 +369,8 @@ export class CommentReply<T extends IRange | ICellRange> extends Disposable {
369369
});
370370
}
371371

372+
override dispose(): void {
373+
super.dispose();
374+
dispose(this._commentThreadDisposables);
375+
}
372376
}

src/vs/workbench/contrib/comments/browser/commentThreadWidget.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -261,6 +261,7 @@ export class CommentThreadWidget<T extends IRange | ICellRange = IRange> extends
261261

262262
override dispose() {
263263
super.dispose();
264+
dispose(this._commentThreadDisposables);
264265
this.updateCurrentThread(false, false);
265266
}
266267

0 commit comments

Comments
 (0)