lib/PublicInbox/LeiMirror.pm | 5 +++-- diff --git a/lib/PublicInbox/LeiMirror.pm b/lib/PublicInbox/LeiMirror.pm index ddb1e74794102761beb7f5a9f65757f0123ba550..0f46d35531f890ec9bacba93c7ea6f64d336c27c 100644 --- a/lib/PublicInbox/LeiMirror.pm +++ b/lib/PublicInbox/LeiMirror.pm @@ -539,8 +539,9 @@ # resolve references, deepest, first: 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) {