summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--NEWS1
-rwxr-xr-xmdkapplet12
2 files changed, 11 insertions, 2 deletions
diff --git a/NEWS b/NEWS
index 9c49127c..9761cef6 100644
--- a/NEWS
+++ b/NEWS
@@ -1,6 +1,7 @@
- mdkapplet
o add mdkonline version to distribution list requests
o log crashes of mdkapplet checker process
+ o prevent checker process from crashing on 2008.1 and 2009.0
Version 2.77.9 - 10 November 2009, Thierry Vignaud
diff --git a/mdkapplet b/mdkapplet
index ca6fa703..9a417d61 100755
--- a/mdkapplet
+++ b/mdkapplet
@@ -578,7 +578,9 @@ sub silentCheck() {
}
checker_exit('locked') if $will_not_update_media;
- my $is_it_a_devel_distro = is_it_a_devel_distro();
+ # prevent crashing on 2008.1 and 2009.0:
+ my $is_it_a_devel_distro = eval { is_it_a_devel_distro() };
+
my $media = $is_it_a_devel_distro ? '-a' : '--update';
if (!run_program::run('urpmi.update', $media, if_($root, "--urpmi-root=$root"))) {
checker_exit('error_updating') if $will_not_update_media;
@@ -594,7 +596,13 @@ sub silentCheck() {
# this eats 52Mb of RAM on 64bit:
# (hence we do it in the forked helper so that the applet doesn't eat too much RAM)
urpm::media::configure($urpm, if_(!$is_it_a_devel_distro, update => 1));
- my @update_medias = get_update_medias($urpm);
+
+ # prevent crashing on 2008.1 and 2009.0:
+ my @update_medias = eval { get_update_medias($urpm) };
+ if ($@) {
+ @update_medias = grep { $_->{update} } @{$urpm->{media}};
+ }
+
if (!@update_medias) {
get_product_id();
if ($product_id->{type} eq 'Enterprise' && $product_id->{product} eq 'Server') {