From 009e41906f494a0ea5ff0d212b318a291c0cd0b0 Mon Sep 17 00:00:00 2001
From: Felix Fietkau <nbd@openwrt.org>
Date: Sat, 4 Oct 2008 16:22:24 +0000
Subject: [PATCH] fix infinite recursion in metadata.pl

SVN-Revision: 12851
---
 scripts/metadata.pl | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/scripts/metadata.pl b/scripts/metadata.pl
index e05cc92c42..9c10f9554c 100755
--- a/scripts/metadata.pl
+++ b/scripts/metadata.pl
@@ -367,7 +367,9 @@ sub mconf_depends($$) {
 	my $only_dep = shift;
 	my $res;
 	my $dep = shift;
+	my $seen = shift;
 	$dep or $dep = {};
+	$seen or $seen = {};
 
 	$depends or return;
 	my @depends = @$depends;
@@ -382,6 +384,8 @@ sub mconf_depends($$) {
 			$condition = $1;
 			$depend = $2;
 		}
+		next if $seen->{$depend};
+		$seen->{$depend} = 1;
 		if ($vdep = $package{$depend}->{vdepends}) {
 			$depend = join("||", map { "PACKAGE_".$_ } @$vdep);
 		} else {
@@ -390,7 +394,7 @@ sub mconf_depends($$) {
 				# thus if FOO depends on other config options, these dependencies
 				# will not be checked. To fix this, we simply emit all of FOO's
 				# depends here as well.
-				$package{$depend} and mconf_depends($package{$depend}->{depends}, 1, $dep);
+				$package{$depend} and mconf_depends($package{$depend}->{depends}, 1, $dep, $seen);
 
 				$m = "select";
 				next if $only_dep;
-- 
2.30.2