From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: X-Spam-Status: No, score=-4.1 required=3.0 tests=ALL_TRUSTED,AWL,BAYES_00, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF shortcircuit=no autolearn=ham autolearn_force=no version=3.4.2 Received: from localhost (dcvr.yhbt.net [127.0.0.1]) by dcvr.yhbt.net (Postfix) with ESMTP id 730DD20182 for ; Mon, 28 Nov 2022 05:32:38 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=80x24.org; s=selector1; t=1669613558; bh=Ml57ZhY41bJ/+a9+Xb1rp9tH14XwRjqmOjUgbW5mcxQ=; h=From:To:Subject:Date:In-Reply-To:References:From; b=O2YR/EVje2Of4/LOm4DD2zo/NyMfEQduj0Q5mbsfelttlBQNnJrp4+dJVEhxjy2Ya bNsWZfB7jEOu19+tfTzdxq+PSy71qGe5W1nC5bR7uOBYcNupfcTK1ugS5qBgk7RU+Q v8VIg+qmqzx0cAa1as/0FUuMTxbu5IEFfrGeTPxk= From: Eric Wong To: meta@public-inbox.org Subject: [PATCH 28/95] lei_mirror: fix infinite loop in dependency resolution Date: Mon, 28 Nov 2022 05:31:25 +0000 Message-Id: <20221128053232.291618-29-e@80x24.org> In-Reply-To: <20221128053232.291618-1-e@80x24.org> References: <20221128053232.291618-1-e@80x24.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit List-Id: We need to account for dependencies which are marked `done'. --- lib/PublicInbox/LeiMirror.pm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) 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) {