From d37f7c158322b3b66e61721f196e7fa56c2c9ab0 Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Mon, 19 Nov 2018 18:55:45 -0800 Subject: [PATCH] Always dispose of DecorationCSSRules Found while looking into #63467 There's potential leak for `DecorationCSSRules`. Currently we only dipose of them if `hasContent` is true, which I'm not sure guarantees that these classes are truely non-disposable With this change, we always dispose of them. At worst, these extra dispose call should be noops --- .../editor/browser/services/codeEditorServiceImpl.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/vs/editor/browser/services/codeEditorServiceImpl.ts b/src/vs/editor/browser/services/codeEditorServiceImpl.ts index 3e03681e22b..7ddea523070 100644 --- a/src/vs/editor/browser/services/codeEditorServiceImpl.ts +++ b/src/vs/editor/browser/services/codeEditorServiceImpl.ts @@ -141,18 +141,18 @@ class DecorationTypeOptionsProvider implements IModelDecorationOptionsProvider { this.refCount = 0; this._disposables = []; - let createCSSRules = (type: ModelDecorationCSSRuleType) => { - let rules = new DecorationCSSRules(type, providerArgs, themeService); + const createCSSRules = (type: ModelDecorationCSSRuleType) => { + const rules = new DecorationCSSRules(type, providerArgs, themeService); + this._disposables.push(rules); if (rules.hasContent) { - this._disposables.push(rules); return rules.className; } return void 0; }; - let createInlineCSSRules = (type: ModelDecorationCSSRuleType) => { - let rules = new DecorationCSSRules(type, providerArgs, themeService); + const createInlineCSSRules = (type: ModelDecorationCSSRuleType) => { + const rules = new DecorationCSSRules(type, providerArgs, themeService); + this._disposables.push(rules); if (rules.hasContent) { - this._disposables.push(rules); return { className: rules.className, hasLetterSpacing: rules.hasLetterSpacing }; } return null; -- GitLab