[Pkg-asv-commits] r28 - trunk

ahoenen-guest at alioth.debian.org ahoenen-guest at alioth.debian.org
Sat Mar 29 09:50:22 UTC 2008


Author: ahoenen-guest
Date: 2008-03-29 09:50:21 +0000 (Sat, 29 Mar 2008)
New Revision: 28

Modified:
   trunk/apt-show-versions
Log:
Do not crash on packages for which the policy can't be determined:
Christoph Martin reported the strange case of a package for which $aversion is
set, but $cache->{$package} is not defined.

Modified: trunk/apt-show-versions
===================================================================
--- trunk/apt-show-versions	2008-03-21 10:50:54 UTC (rev 27)
+++ trunk/apt-show-versions	2008-03-29 09:50:21 UTC (rev 28)
@@ -295,23 +295,26 @@
 sub print_version {
     my ($archiv, $package, $iversion, $aversion) = @_;
 
-    if ((defined $aversion) and
-        ($aversion eq $policy->candidate($cache->{$package})->{VerStr}))
-    {
-        my $cmp_versions = $vs->compare($aversion, $iversion);
-        if ($cmp_versions != 0) {
-            my $direction = ($cmp_versions > 0) ? 'up' : 'down';
-            return(2, "$package/$archiv", (defined($opts{'brief'})) ? "\n"
-                   : " ${direction}gradeable from $iversion to $aversion\n");
+    if (defined($aversion) and $cache->{$package}) {
+        my $cand = $policy->candidate($cache->{$package});
+        if ($cand and $aversion eq $cand->{VerStr})
+        {
+            my $cmp_versions = $vs->compare($aversion, $iversion);
+            if ($cmp_versions != 0) {
+                my $direction = ($cmp_versions > 0) ? 'up' : 'down';
+                return(2, "$package/$archiv",
+                       (defined($opts{'brief'})) ? "\n" :
+                       " ${direction}gradeable from $iversion to $aversion\n");
+            }
+            else {
+                return(1, "$package/$archiv", defined($opts{'brief'}) ? "\n"
+                       : " uptodate $iversion\n");
+            }
         }
-        else {
-            return(1, "$package/$archiv", defined($opts{'brief'}) ? "\n"
-                   : " uptodate $iversion\n");
-        }
     }
-    else {
-        return 0;
-    }
+    # Default outcome: either version is definitely not to be installed/kept
+    #                  or information for a decicion is lacking.
+    return(0, undef);
 }
 
 # print information about package




More information about the Pkg-asv-commits mailing list