From: Che Guevara <836934184@qq.com> Date: Tue, 2 Nov 2021 03:26:40 +0000 (+0800) Subject: fix(devtools): fix memory leak when devtools is not installed (#4833) X-Git-Tag: v3.2.21~6 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=6b32f0d976c0aac8bb2c1b78fedd03e76fb391eb;p=thirdparty%2Fvuejs%2Fcore.git fix(devtools): fix memory leak when devtools is not installed (#4833) fix #4829 --- diff --git a/packages/runtime-core/src/devtools.ts b/packages/runtime-core/src/devtools.ts index b5cbe30608..2e09a2e24a 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) } }