X-Git-Url: https://git.saurik.com/apt.git/blobdiff_plain/eed4639e3feea0dd4ebedfac95fb5428753b795f..56867d153a47f8c854f8bf0542df69065fc28ce0:/apt-pkg/edsp.cc diff --git a/apt-pkg/edsp.cc b/apt-pkg/edsp.cc index 225d86de0..bf625cc97 100644 --- a/apt-pkg/edsp.cc +++ b/apt-pkg/edsp.cc @@ -84,7 +84,7 @@ static void WriteScenarioVersion(pkgDepCache &Cache, FILE* output, pkgCache::Pkg fprintf(output, " %s\n", R->c_str()); } fprintf(output, "APT-Pin: %d\n", Pin); - if (Cache.GetCandidateVer(Pkg) == Ver) + if (Cache.GetCandidateVersion(Pkg) == Ver) fprintf(output, "APT-Candidate: yes\n"); if ((Cache[Pkg].Flags & pkgCache::Flag::Auto) == pkgCache::Flag::Auto) fprintf(output, "APT-Automatic: yes\n"); @@ -343,7 +343,11 @@ bool EDSP::ReadResponse(int const input, pkgDepCache &Cache, OpProgress *Progres pkgCache::VerIterator Ver(Cache.GetCache(), Cache.GetCache().VerP + VerIdx[id]); Cache.SetCandidateVersion(Ver); if (type == "Install") - Cache.MarkInstall(Ver.ParentPkg(), false, 0, false); + { + pkgCache::PkgIterator const P = Ver.ParentPkg(); + if (Cache[P].Mode != pkgDepCache::ModeInstall) + Cache.MarkInstall(P, false, 0, false); + } else if (type == "Remove") Cache.MarkDelete(Ver.ParentPkg(), false); else if (type == "Autoremove") { @@ -506,9 +510,10 @@ bool EDSP::WriteSolution(pkgDepCache &Cache, FILE* output) } else if (Cache[Pkg].NewInstall() == true || Cache[Pkg].Upgrade() == true) { - fprintf(output, "Install: %d\n", Cache.GetCandidateVer(Pkg)->ID); + pkgCache::VerIterator const CandVer = Cache.GetCandidateVersion(Pkg); + fprintf(output, "Install: %d\n", CandVer->ID); if (Debug == true) - fprintf(output, "Package: %s\nVersion: %s\n", Pkg.FullName().c_str(), Cache.GetCandidateVer(Pkg).VerStr()); + fprintf(output, "Package: %s\nVersion: %s\n", Pkg.FullName().c_str(), CandVer.VerStr()); } else if (Cache[Pkg].Garbage == true) {