未验证 提交 af52f2cb 编写于 作者: A Alex Dima

`TextModel` should not dispose its `TextBuffer`

上级 8dce3899
...@@ -1327,7 +1327,7 @@ export interface IReadonlyTextBuffer { ...@@ -1327,7 +1327,7 @@ export interface IReadonlyTextBuffer {
/** /**
* @internal * @internal
*/ */
export interface ITextBuffer extends IReadonlyTextBuffer, IDisposable { export interface ITextBuffer extends IReadonlyTextBuffer {
setEOL(newEOL: '\r\n' | '\n'): void; setEOL(newEOL: '\r\n' | '\n'): void;
applyEdits(rawOperations: ValidAnnotatedEditOperation[], recordTrimAutoWhitespace: boolean, computeUndoEdits: boolean): ApplyEditsResult; applyEdits(rawOperations: ValidAnnotatedEditOperation[], recordTrimAutoWhitespace: boolean, computeUndoEdits: boolean): ApplyEditsResult;
} }
......
...@@ -51,12 +51,6 @@ export class PieceTreeTextBuffer extends Disposable implements ITextBuffer { ...@@ -51,12 +51,6 @@ export class PieceTreeTextBuffer extends Disposable implements ITextBuffer {
this._pieceTree = new PieceTreeBase(chunks, eol, eolNormalized); this._pieceTree = new PieceTreeBase(chunks, eol, eolNormalized);
} }
dispose(): void {
super.dispose();
// Manually release reference to previous piece tree to avoid large leaks
this._pieceTree = new PieceTreeBase([], '\n', true);
}
// #region TextBuffer // #region TextBuffer
public equals(other: ITextBuffer): boolean { public equals(other: ITextBuffer): boolean {
if (!(other instanceof PieceTreeTextBuffer)) { if (!(other instanceof PieceTreeTextBuffer)) {
......
...@@ -328,7 +328,7 @@ export class TextModel extends Disposable implements model.ITextModel { ...@@ -328,7 +328,7 @@ export class TextModel extends Disposable implements model.ITextModel {
this._undoRedoService = undoRedoService; this._undoRedoService = undoRedoService;
this._attachedEditorCount = 0; this._attachedEditorCount = 0;
this._buffer = this._register(createTextBuffer(source, creationOptions.defaultEOL)); this._buffer = createTextBuffer(source, creationOptions.defaultEOL);
this._options = TextModel.resolveOptions(this._buffer, creationOptions); this._options = TextModel.resolveOptions(this._buffer, creationOptions);
...@@ -387,6 +387,9 @@ export class TextModel extends Disposable implements model.ITextModel { ...@@ -387,6 +387,9 @@ export class TextModel extends Disposable implements model.ITextModel {
this._isDisposed = true; this._isDisposed = true;
super.dispose(); super.dispose();
this._isDisposing = false; this._isDisposing = false;
// Manually release reference to previous text buffer to avoid large leaks
// in case someone leaks a TextModel reference
this._buffer = createTextBuffer('', this._options.defaultEOL);
} }
private _assertNotDisposed(): void { private _assertNotDisposed(): void {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册