summaryrefslogtreecommitdiff
path: root/apt-pkg/algorithms.cc
diff options
context:
space:
mode:
Diffstat (limited to 'apt-pkg/algorithms.cc')
-rw-r--r--apt-pkg/algorithms.cc17
1 files changed, 17 insertions, 0 deletions
diff --git a/apt-pkg/algorithms.cc b/apt-pkg/algorithms.cc
index 3c8711b74..a46dce2db 100644
--- a/apt-pkg/algorithms.cc
+++ b/apt-pkg/algorithms.cc
@@ -987,6 +987,23 @@ bool pkgProblemResolver::Resolve(bool BrokenFix)
pkgCache::VerIterator Ver(Cache,*V);
pkgCache::PkgIterator Pkg = Ver.ParentPkg();
+ /* Ignore a target that is not a candidate
+ This can happen if:
+ installed package provides video-6
+ candidate provides video-8
+ now if a package Start breaks/conflicts video-6
+ Start.AllTargets() will return the now-installed
+ versions even though these are not candidates
+ we can ignore them
+ */
+ if (Cache[Pkg].CandidateVerIter(Cache) != Ver)
+ {
+ clog << " Version " << Ver.VerStr() << " for "
+ << Pkg.Name() << " is not a candidate, ignoring"
+ << endl;
+ continue;
+ }
+
if (Debug == true)
clog << " Considering " << Pkg.FullName(false) << ' ' << (int)Scores[Pkg->ID] <<
" as a solution to " << I.FullName(false) << ' ' << (int)Scores[I->ID] << endl;