diff options
author | Felix Fietkau <nbd@openwrt.org> | 2008-10-04 16:22:24 +0000 |
---|---|---|
committer | Felix Fietkau <nbd@openwrt.org> | 2008-10-04 16:22:24 +0000 |
commit | 6496ba1779456ded89e92d269f2c8dca49d241ff (patch) | |
tree | 11cc837dab9be64d879b395b52268dbad4083882 /scripts | |
parent | b743aa01879939a941b643c4ca502b10ec5de51f (diff) | |
download | upstream-6496ba1779456ded89e92d269f2c8dca49d241ff.tar.gz upstream-6496ba1779456ded89e92d269f2c8dca49d241ff.tar.bz2 upstream-6496ba1779456ded89e92d269f2c8dca49d241ff.zip |
fix infinite recursion in metadata.pl
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@12851 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'scripts')
-rwxr-xr-x | scripts/metadata.pl | 6 |
1 files changed, 5 insertions, 1 deletions
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; |