Fix recursive graph traversal. Fixes #923.
1 parent 04a9cae commit 8a528338582140b8db715d041e8c7484ada1c465
@Sönke Ludwig Sönke Ludwig authored on 8 Sep 2016
Showing 1 changed file
View
5
source/dub/dependencyresolver.d
 
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)
markRecursively(TreeNode(dep.pack, *dp));