]> git.saurik.com Git - apt.git/commitdiff
* apt-pkg/policy.cc:
authorJulian Andres Klode <jak@debian.org>
Sun, 21 Mar 2010 16:38:43 +0000 (17:38 +0100)
committerJulian Andres Klode <jak@debian.org>
Sun, 21 Mar 2010 16:38:43 +0000 (17:38 +0100)
  - Always return a candidate if there is at least one version pinned > 0
    (Closes: #512318)

apt-pkg/policy.cc
debian/changelog

index f9901bc9af183c1e1c6e669730e22356f483307f..b12a50d0a2228c2d398597f781685c07aabb690e 100644 (file)
@@ -121,6 +121,10 @@ pkgCache::VerIterator pkgPolicy::GetCandidateVer(pkgCache::PkgIterator Pkg)
    signed Max = GetPriority(Pkg);
    pkgCache::VerIterator Pref = GetMatch(Pkg);
 
    signed Max = GetPriority(Pkg);
    pkgCache::VerIterator Pref = GetMatch(Pkg);
 
+   // Alternatives in case we can not find our package pin (Bug#512318).
+   signed MaxAlt = 0;
+   pkgCache::VerIterator PrefAlt;
+
    // no package = no candidate version
    if (Pkg.end() == true)
       return Pref;
    // no package = no candidate version
    if (Pkg.end() == true)
       return Pref;
@@ -159,6 +163,11 @@ pkgCache::VerIterator pkgPolicy::GetCandidateVer(pkgCache::PkgIterator Pkg)
         {
            Pref = Ver;
            Max = Prio;
         {
            Pref = Ver;
            Max = Prio;
+        }
+        if (Prio > MaxAlt)
+        {
+           PrefAlt = Ver;
+           MaxAlt = Prio;
         }       
       }      
       
         }       
       }      
       
@@ -175,6 +184,11 @@ pkgCache::VerIterator pkgPolicy::GetCandidateVer(pkgCache::PkgIterator Pkg)
            break;
       }            
    }
            break;
       }            
    }
+   // If we do not find our candidate, use the one with the highest pin.
+   // This means that if there is a version available with pin > 0; there
+   // will always be a candidate (Closes: #512318)
+   if (!Pref.IsGood() && MaxAlt > 0)
+       Pref = PrefAlt;
    return Pref;
 }
                                                                        /*}}}*/
    return Pref;
 }
                                                                        /*}}}*/
index 24bea801d6a199d3338fe6aa68bbe9324e269c83..c53c2a4686b15a8f0c4b48128623e4aa150c4540 100644 (file)
@@ -13,6 +13,9 @@ apt (0.7.26~exp3) UNRELEASED; urgency=low
     - Use the new python-apt API (and conflict with python-apt << 0.7.93.2).
   * apt-inst/contrib/arfile.h:
     - Add public ARArchive::Members() which returns the list of members.
     - Use the new python-apt API (and conflict with python-apt << 0.7.93.2).
   * apt-inst/contrib/arfile.h:
     - Add public ARArchive::Members() which returns the list of members.
+  * apt-pkg/policy.cc:
+    - Always return a candidate if there is at least one version pinned > 0
+      (Closes: #512318)
   * debian/rules:
     - Fix the libraries name to be e.g. libapt-pkg4.9 instead of
       libapt-pkg-4.9.
   * debian/rules:
     - Fix the libraries name to be e.g. libapt-pkg4.9 instead of
       libapt-pkg-4.9.