From 3d659161e63c17bff881398b2d1072e8022bd601 Mon Sep 17 00:00:00 2001 From: daimond113 <72147841+daimond113@users.noreply.github.com> Date: Thu, 16 Jan 2025 23:18:23 +0100 Subject: [PATCH] fix(resolver): handle infinite loop in resolver Fixes a recursive loop in the resolver when resolving dependencies that depend on themselves from an existing lockfile. --- src/resolver.rs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/resolver.rs b/src/resolver.rs index 5fa219c..8de634f 100644 --- a/src/resolver.rs +++ b/src/resolver.rs @@ -124,6 +124,12 @@ impl Project { if let Some(dep_node) = previous_graph.get(dep_id) { tracing::debug!("resolved sub-dependency {dep_id}"); + if graph.contains_key(dep_id) { + tracing::debug!( + "sub-dependency {dep_id} already resolved in new graph", + ); + continue; + } insert_node(&mut graph, dep_id, dep_node.clone(), false); dep_node