From 94f7c1d971f71d70cdef7b7ed461f399162d08c3 Mon Sep 17 00:00:00 2001 From: Johannes Rieken Date: Thu, 28 Mar 2024 10:08:25 +0100 Subject: [PATCH] address listener leak (#208989) fixes https://github.com/microsoft/vscode/issues/207446 --- .../electron-sandbox/localProcessExtensionHost.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/vs/workbench/services/extensions/electron-sandbox/localProcessExtensionHost.ts b/src/vs/workbench/services/extensions/electron-sandbox/localProcessExtensionHost.ts index 17b46066a3b..ea4330739f5 100644 --- a/src/vs/workbench/services/extensions/electron-sandbox/localProcessExtensionHost.ts +++ b/src/vs/workbench/services/extensions/electron-sandbox/localProcessExtensionHost.ts @@ -243,8 +243,8 @@ export class NativeLocalProcessExtensionHost implements IExtensionHost { // Catch all output coming from the extension host process type Output = { data: string; format: string[] }; - const onStdout = this._handleProcessOutputStream(this._extensionHostProcess.onStdout); - const onStderr = this._handleProcessOutputStream(this._extensionHostProcess.onStderr); + const onStdout = this._handleProcessOutputStream(this._extensionHostProcess.onStdout, this._toDispose); + const onStderr = this._handleProcessOutputStream(this._extensionHostProcess.onStderr, this._toDispose); const onOutput = Event.any( Event.map(onStdout.event, o => ({ data: `%c${o}`, format: [''] })), Event.map(onStderr.event, o => ({ data: `%c${o}`, format: ['color: red'] })) @@ -258,7 +258,7 @@ export class NativeLocalProcessExtensionHost implements IExtensionHost { }, 100); // Print out extension host output - onDebouncedOutput(output => { + this._toDispose.add(onDebouncedOutput(output => { const inspectorUrlMatch = output.data && output.data.match(/ws:\/\/([^\s]+:(\d+)\/[^\s]+)/); if (inspectorUrlMatch) { if (!this._environmentService.isBuilt && !this._isExtensionDevTestFromCli) { @@ -275,7 +275,7 @@ export class NativeLocalProcessExtensionHost implements IExtensionHost { console.groupEnd(); } } - }); + })); // Lifecycle @@ -521,7 +521,7 @@ export class NativeLocalProcessExtensionHost implements IExtensionHost { this._onExit.fire([code, signal]); } - private _handleProcessOutputStream(stream: Event) { + private _handleProcessOutputStream(stream: Event, store: DisposableStore) { let last = ''; let isOmitting = false; const event = new Emitter(); @@ -549,7 +549,7 @@ export class NativeLocalProcessExtensionHost implements IExtensionHost { event.fire(line + '\n'); } } - }); + }, undefined, store); return event; }