From 8ee72d2534396ec979894cb8610ac10bb2746676 Mon Sep 17 00:00:00 2001 From: Benjamin Pasero Date: Thu, 6 Oct 2016 14:56:59 +0200 Subject: [PATCH] resolveEditorModel: dispose input after model is resolved --- .../services/editor/browser/editorService.ts | 23 ++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/src/vs/workbench/services/editor/browser/editorService.ts b/src/vs/workbench/services/editor/browser/editorService.ts index 37021f28a3d..dd88f1f470a 100644 --- a/src/vs/workbench/services/editor/browser/editorService.ts +++ b/src/vs/workbench/services/editor/browser/editorService.ts @@ -107,7 +107,7 @@ export class WorkbenchEditorService implements IWorkbenchEditorService { const schema = resourceInput.resource.scheme; if (schema === network.Schemas.http || schema === network.Schemas.https) { window.open(resourceInput.resource.toString(true)); - + return TPromise.as(null); } } @@ -198,12 +198,29 @@ export class WorkbenchEditorService implements IWorkbenchEditorService { public resolveEditorModel(input: IEditorInput, refresh?: boolean): TPromise; public resolveEditorModel(input: IResourceInput, refresh?: boolean): TPromise; public resolveEditorModel(input: any, refresh?: boolean): TPromise { + let disposeInput = !(input instanceof EditorInput); // dispose input if we created it in here + return this.createInput(input).then(typedInput => { + let resolvePromise: TPromise; if (typedInput instanceof EditorInput) { - return typedInput.resolve(!!refresh); + resolvePromise = typedInput.resolve(!!refresh); + } else { + resolvePromise = TPromise.as(null); } - return TPromise.as(null); + return resolvePromise.then(model => { + if (disposeInput) { + typedInput.dispose(); + } + + return model; + }, error => { + if (disposeInput) { + typedInput.dispose(); + } + + return TPromise.wrapError(error); + }); }); } -- GitLab