From 5233a64be8e18c67fc309865fbaf3bbdca636e81 Mon Sep 17 00:00:00 2001 From: Rafael Garcia-Suarez Date: Mon, 5 Sep 2005 13:32:39 +0000 Subject: At some point, an empty hashref is autovivified in $packages->{medium}. So, protect the loops that iterate over this hash, in application of the belt and suspenders doctrine. --- perl-install/install_any.pm | 2 +- perl-install/pkgs.pm | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) (limited to 'perl-install') diff --git a/perl-install/install_any.pm b/perl-install/install_any.pm index 69686e7de..8646d4ac4 100644 --- a/perl-install/install_any.pm +++ b/perl-install/install_any.pm @@ -1021,7 +1021,7 @@ sub warnAboutFilesStillOpen() { sub install_urpmi { my ($method, $packages) = @_; - my @mediums = values %{$packages->{mediums}}; + my @mediums = grep { defined $_->{medium} } values %{$packages->{mediums}}; my $hdInstallPath = any::hdInstallPath(); #- rare case where urpmi cannot be installed (no hd install path). diff --git a/perl-install/pkgs.pm b/perl-install/pkgs.pm index 3eb471b5c..869384677 100644 --- a/perl-install/pkgs.pm +++ b/perl-install/pkgs.pm @@ -247,7 +247,6 @@ sub packageRequest { #- check for medium selection, if the medium has not been #- selected, the package cannot be selected. foreach (values %{$packages->{mediums}}) { - #- XXX $_ should always be an object here !$_->{selected} && $pkg->id >= $_->{start} && $pkg->id <= $_->{end} and return; } @@ -369,6 +368,7 @@ sub psUpdateHdlistsDeps { #- check if current configuration is still up-to-date and do not need to be updated. foreach (values %{$packages->{mediums}}) { + next if ref $_ ne 'install_medium'; #- skip empty hash artifact $_->selected || $_->ignored or next; my $hdlistf = "$urpmidir/hdlist.$_->{fakemedium}.cz" . ($_->{hdlist} =~ /\.cz2/ && "2"); my $synthesisf = "$urpmidir/synthesis.hdlist.$_->{fakemedium}.cz" . ($_->{hdlist} =~ /\.cz2/ && "2"); @@ -966,6 +966,7 @@ sub installTransactionClosure { #- search first usable medium (sorted by medium ordering). foreach (sort { $a->{start} <=> $b->{start} } values %{$packages->{mediums}}) { + next if ref $_ ne 'install_medium'; #- skip empty hash artifact unless ($_->selected) { #- this medium is not selected, but we have to make sure no package is left #- in $id2pkg. -- cgit v1.2.1