Просмотр исходного кода

fix(ssr): fix memory leak when vnode component render throws error

fix #3100
Evan You 5 лет назад
Родитель
Сommit
da944cb379
1 измененных файлов с 3 добавлено и 1 удалено
  1. 3 1
      packages/runtime-core/src/componentRenderUtils.ts

+ 3 - 1
packages/runtime-core/src/componentRenderUtils.ts

@@ -10,7 +10,8 @@ import {
   Comment,
   cloneVNode,
   VNodeArrayChildren,
-  isVNode
+  isVNode,
+  blockStack
 } from './vnode'
 import { handleError, ErrorCodes } from './errorHandling'
 import { PatchFlags, ShapeFlags, isOn, isModelListener } from '@vue/shared'
@@ -201,6 +202,7 @@ export function renderComponentRoot(
       result = root
     }
   } catch (err) {
+    blockStack.length = 0
     handleError(err, instance, ErrorCodes.RENDER_FUNCTION)
     result = createVNode(Comment)
   }