From e130c60482d3fe4569de11f7e76864d9699b2bd0 Mon Sep 17 00:00:00 2001 From: Daniel Imms Date: Wed, 30 Aug 2017 09:56:46 -0700 Subject: [PATCH] Properly dispose of WindowsShellHelper Fixes #33536 --- .../terminal/electron-browser/windowsShellHelper.ts | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/vs/workbench/parts/terminal/electron-browser/windowsShellHelper.ts b/src/vs/workbench/parts/terminal/electron-browser/windowsShellHelper.ts index 3968030ed9d..4bce08204b1 100644 --- a/src/vs/workbench/parts/terminal/electron-browser/windowsShellHelper.ts +++ b/src/vs/workbench/parts/terminal/electron-browser/windowsShellHelper.ts @@ -3,7 +3,6 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import * as cp from 'child_process'; import * as platform from 'vs/base/common/platform'; import { TPromise } from 'vs/base/common/winjs.base'; import { Emitter, debounceEvent } from 'vs/base/common/event'; @@ -17,7 +16,6 @@ let windowsProcessTree; export class WindowsShellHelper { private _childProcessIdStack: number[]; private _onCheckShell: Emitter>; - private _wmicProcess: cp.ChildProcess; private _isDisposed: boolean; public constructor( @@ -60,6 +58,9 @@ export class WindowsShellHelper { } private traverseTree(tree: any): string { + if (!tree) { + return ''; + } if (SHELL_EXECUTABLES.indexOf(tree.name) === -1) { return tree.name; } @@ -84,15 +85,15 @@ export class WindowsShellHelper { public dispose(): void { this._isDisposed = true; - if (this._wmicProcess) { - this._wmicProcess.kill(); - } } /** * Returns the innermost shell executable running in the terminal */ public getShellName(): TPromise { + if (this._isDisposed) { + return TPromise.as(''); + } return new TPromise(resolve => { windowsProcessTree(this._rootProcessId, (tree) => { resolve(this.traverseTree(tree)); -- GitLab