It seems more graceful than dying and breaking a mirror, since
the {reference} in util-linux was irrelevant anyways with the
move to forkgroups.
# resolve multi-level references
while ($m && defined($nxt = $m->{$x}->{reference})) {
exists($todo->{$nxt}) or last;
# resolve multi-level references
while ($m && defined($nxt = $m->{$x}->{reference})) {
exists($todo->{$nxt}) or last;
- die <<EOM if ++$nr > 1000;
-E: dependency loop detected (`$x' => `$nxt')
+ if (++$nr > 1000) {
+ $m->{$x}->{reference} = undef;
+ $m->{$nxt}->{reference} = undef;
+ warn <<EOM
+E: dependency loop detected (`$x' => `$nxt'), breaking
$x = $nxt;
}
my $y = delete $todo->{$x} // next; # already done
$x = $nxt;
}
my $y = delete $todo->{$x} // next; # already done