From: Eric Wong Date: Mon, 28 Nov 2022 05:31:25 +0000 (+0000) Subject: lei_mirror: fix infinite loop in dependency resolution X-Git-Url: http://www.git.stargrave.org/?a=commitdiff_plain;h=7ffd45cd748658db1fa360fa248b3fa81d811c94;p=public-inbox.git lei_mirror: fix infinite loop in dependency resolution We need to account for dependencies which are marked `done'. --- diff --git a/lib/PublicInbox/LeiMirror.pm b/lib/PublicInbox/LeiMirror.pm index ddb1e747..0f46d355 100644 --- a/lib/PublicInbox/LeiMirror.pm +++ b/lib/PublicInbox/LeiMirror.pm @@ -539,8 +539,9 @@ sub clone_all { while (scalar keys %$todo) { for my $x (keys %$todo) { # resolve multi-level references - while (defined($m->{$x}->{reference})) { - $x = $m->{$x}->{reference}; + while (defined(my $nxt = $m->{$x}->{reference})) { + exists($todo->{$nxt}) or last; + $x = $nxt; } my $y = delete $todo->{$x} // next; # already done for (@$y) {