From 6b32f0d976c0aac8bb2c1b78fedd03e76fb391eb Mon Sep 17 00:00:00 2001 From: Che Guevara <836934184@qq.com> Date: Tue, 2 Nov 2021 11:26:40 +0800 Subject: [PATCH] fix(devtools): fix memory leak when devtools is not installed (#4833) fix #4829 --- packages/runtime-core/src/devtools.ts | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/packages/runtime-core/src/devtools.ts b/packages/runtime-core/src/devtools.ts index b5cbe30608a..2e09a2e24a1 100644 --- a/packages/runtime-core/src/devtools.ts +++ b/packages/runtime-core/src/devtools.ts @@ -33,10 +33,12 @@ export let devtools: DevtoolsHook let buffer: { event: string; args: any[] }[] = [] +let devtoolsNotInstalled = false + function emit(event: string, ...args: any[]) { if (devtools) { devtools.emit(event, ...args) - } else { + } else if (!devtoolsNotInstalled) { buffer.push({ event, args }) } } @@ -56,7 +58,10 @@ export function setDevtoolsHook(hook: DevtoolsHook, target: any) { // clear buffer after 3s - the user probably doesn't have devtools installed // at all, and keeping the buffer will cause memory leaks (#4738) setTimeout(() => { - buffer = [] + if (!devtools) { + devtoolsNotInstalled = true + buffer = [] + } }, 3000) } }