Skip to content

Commit

Permalink
Prevent infinite recursion when the visualizer mapping subgraph conta…
Browse files Browse the repository at this point in the history
…ins cycles

Fixes #1769
  • Loading branch information
PathogenDavid committed May 10, 2024
1 parent 88a2412 commit 8bdadf1
Showing 1 changed file with 7 additions and 1 deletion.
8 changes: 7 additions & 1 deletion Bonsai.Editor/Layout/LayoutHelper.cs
Original file line number Diff line number Diff line change
Expand Up @@ -188,12 +188,18 @@ public static VisualizerDialogLauncher CreateVisualizerLauncher(
}

static IReadOnlyList<VisualizerFactory> GetMashupArguments(InspectBuilder builder, TypeVisualizerMap typeVisualizerMap)
=> GetMashupArguments(new HashSet<InspectBuilder>(), builder, typeVisualizerMap);

static IReadOnlyList<VisualizerFactory> GetMashupArguments(HashSet<InspectBuilder> enumeratedBuilders, InspectBuilder builder, TypeVisualizerMap typeVisualizerMap)
{
if (!enumeratedBuilders.Add(builder))
throw new WorkflowBuildException("Visualizer mapping subgraph contains cycles.", builder);

var visualizerMappings = ExpressionBuilder.GetVisualizerMappings(builder);
if (visualizerMappings.Count == 0) return Array.Empty<VisualizerFactory>();
return visualizerMappings.Select(mapping =>
{
var nestedSources = GetMashupArguments(mapping.Source, typeVisualizerMap);
var nestedSources = GetMashupArguments(enumeratedBuilders, mapping.Source, typeVisualizerMap);
var visualizerType = mapping.VisualizerType ?? typeVisualizerMap.GetTypeVisualizers(mapping.Source).FirstOrDefault();
return new VisualizerFactory(mapping.Source, visualizerType, nestedSources);
}).ToList();
Expand Down

0 comments on commit 8bdadf1

Please sign in to comment.