]> git.ipfire.org Git - thirdparty/vuejs/core.git/commitdiff
fix(runtime-core): component mount anchor memory leak (#2459)
authorBas van Meurs <bvanmeurs1985@gmail.com>
Fri, 4 Dec 2020 23:03:10 +0000 (00:03 +0100)
committerGitHub <noreply@github.com>
Fri, 4 Dec 2020 23:03:10 +0000 (18:03 -0500)
fix #2458

packages/runtime-core/src/renderer.ts

index 3baaf2405ea5dbd926905db5777bc1c0c078c76d..da86040d0a15782bf622bec909efb5ebe699e050 100644 (file)
@@ -1395,8 +1395,9 @@ function baseCreateRenderer(
         }
         // onVnodeMounted
         if ((vnodeHook = props && props.onVnodeMounted)) {
+          const scopedInitialVNode = initialVNode
           queuePostRenderEffect(() => {
-            invokeVNodeHook(vnodeHook!, parent, initialVNode)
+            invokeVNodeHook(vnodeHook!, parent, scopedInitialVNode)
           }, parentSuspense)
         }
         // activated hook for keep-alive roots.
@@ -1410,6 +1411,9 @@ function baseCreateRenderer(
           queuePostRenderEffect(a, parentSuspense)
         }
         instance.isMounted = true
+
+        // #2458: deference mount-only object parameters to prevent memleaks
+        initialVNode = container = anchor = null as any
       } else {
         // updateComponent
         // This is triggered by mutation of component's own state (next: null)