From 4e439e9cafbe6d063680e486cc9ab5e405b9587c Mon Sep 17 00:00:00 2001 From: Egil Hansen Date: Wed, 28 Jun 2023 17:25:14 +0000 Subject: [PATCH] fix: prevent endless recursion loading render tree frames (#1132) --- src/bunit.core/Rendering/TestRenderer.cs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/bunit.core/Rendering/TestRenderer.cs b/src/bunit.core/Rendering/TestRenderer.cs index b92ab7774..b954730d1 100644 --- a/src/bunit.core/Rendering/TestRenderer.cs +++ b/src/bunit.core/Rendering/TestRenderer.cs @@ -279,6 +279,11 @@ private void UpdateDisplay(in RenderBatch renderBatch) { var id = renderBatch.DisposedComponentIDs.Array[i]; + // Add disposed components to the frames collection + // to avoid them being added into the dictionary later during a + // LoadRenderTreeFrames/GetOrLoadRenderTreeFrame call. + renderEvent.Frames.Add(id, default); + logger.LogComponentDisposed(id); if (renderedComponents.TryGetValue(id, out var rc)) @@ -443,7 +448,8 @@ private void LoadRenderTreeFrames(int componentId, RenderTreeFrameDictionary fra for (var i = 0; i < frames.Count; i++) { ref var frame = ref frames.Array[i]; - if (frame.FrameType == RenderTreeFrameType.Component) + + if (frame.FrameType == RenderTreeFrameType.Component && !framesCollection.Contains(frame.ComponentId)) { LoadRenderTreeFrames(frame.ComponentId, framesCollection); }