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

`TextModel` should not dispose its `TextBuffer`

上级 8dce3899
......@@ -1327,7 +1327,7 @@ export interface IReadonlyTextBuffer {
/**
* @internal
*/
export interface ITextBuffer extends IReadonlyTextBuffer, IDisposable {
export interface ITextBuffer extends IReadonlyTextBuffer {
setEOL(newEOL: '\r\n' | '\n'): void;
applyEdits(rawOperations: ValidAnnotatedEditOperation[], recordTrimAutoWhitespace: boolean, computeUndoEdits: boolean): ApplyEditsResult;
}
......
......@@ -51,12 +51,6 @@ export class PieceTreeTextBuffer extends Disposable implements ITextBuffer {
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
public equals(other: ITextBuffer): boolean {
if (!(other instanceof PieceTreeTextBuffer)) {
......
......@@ -328,7 +328,7 @@ export class TextModel extends Disposable implements model.ITextModel {
this._undoRedoService = undoRedoService;
this._attachedEditorCount = 0;
this._buffer = this._register(createTextBuffer(source, creationOptions.defaultEOL));
this._buffer = createTextBuffer(source, creationOptions.defaultEOL);
this._options = TextModel.resolveOptions(this._buffer, creationOptions);
......@@ -387,6 +387,9 @@ export class TextModel extends Disposable implements model.ITextModel {
this._isDisposed = true;
super.dispose();
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 {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册