diff --git a/source/dub/dependencyresolver.d b/source/dub/dependencyresolver.d index dbe898e..bf5e908 100644 --- a/source/dub/dependencyresolver.d +++ b/source/dub/dependencyresolver.d @@ -253,10 +253,12 @@ private void purgeOptionalDependencies(TreeNode root, ref CONFIG[string] configs) { bool[string] required; + bool[string] visited; void markRecursively(TreeNode node) { - if (node.pack in required) return; + if (node.pack in visited) return; + visited[node.pack] = true; required[basePackage(node.pack)] = true; foreach (dep; getChildren(node).filter!(dep => dep.depType != DependencyType.optional)) if (auto dp = basePackage(dep.pack) in configs)