From 209e913f40419285404c4b3d1a8419b8e09f92f6 Mon Sep 17 00:00:00 2001 From: David Maas Date: Thu, 9 May 2024 20:36:44 -0500 Subject: [PATCH] Prevent infinite recursion when the visualizer mapping subgraph contains cycles Fixes https://github.com/bonsai-rx/bonsai/issues/1769 --- Bonsai.Editor/Layout/LayoutHelper.cs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Bonsai.Editor/Layout/LayoutHelper.cs b/Bonsai.Editor/Layout/LayoutHelper.cs index 1f205ae66..e9b9d3471 100644 --- a/Bonsai.Editor/Layout/LayoutHelper.cs +++ b/Bonsai.Editor/Layout/LayoutHelper.cs @@ -193,8 +193,11 @@ static IReadOnlyList GetMashupArguments(InspectBuilder builde if (visualizerMappings.Count == 0) return Array.Empty(); return visualizerMappings.Select(mapping => { - var nestedSources = GetMashupArguments(mapping.Source, typeVisualizerMap); + // mapping.Source == builder if two visualizers in the mashup visualize the same node + var nestedSources = mapping.Source == builder ? null : GetMashupArguments(mapping.Source, typeVisualizerMap); + var visualizerType = mapping.VisualizerType ?? typeVisualizerMap.GetTypeVisualizers(mapping.Source).FirstOrDefault(); + return new VisualizerFactory(mapping.Source, visualizerType, nestedSources); }).ToList(); }