diff options
author | David Kalnischkies <kalnischkies@gmail.com> | 2010-04-03 17:07:30 +0200 |
---|---|---|
committer | David Kalnischkies <kalnischkies@gmail.com> | 2010-04-03 17:07:30 +0200 |
commit | c753eec1d192a56e7f4ba1b07ae766b740185a3f (patch) | |
tree | ba29b47c741d837f4f65b4528d094afe056c13e6 | |
parent | 22326578d84ee9df4b192dd5ba5120098afe97ea (diff) |
* apt-pkg/depcache.cc:
- "reinstall" the correct version for a killed pseudo package
-rw-r--r-- | apt-pkg/depcache.cc | 7 | ||||
-rw-r--r-- | debian/changelog | 7 |
2 files changed, 12 insertions, 2 deletions
diff --git a/apt-pkg/depcache.cc b/apt-pkg/depcache.cc index 75f69ee11..0f07de2fe 100644 --- a/apt-pkg/depcache.cc +++ b/apt-pkg/depcache.cc @@ -855,13 +855,16 @@ void pkgDepCache::Update(OpProgress *Prog) if (P.end() == true) continue; for (VerIterator V = P.VersionList(); V.end() != true; ++V) { - // FIXME: String comparison isn't a save indicator! - if (strcmp(allV.VerStr(),V.VerStr()) != 0) + if (allV->Hash != V->Hash || + strcmp(allV.VerStr(),V.VerStr()) != 0) continue; unsigned char const CurDepState = VersionState(V.DependsList(),DepInstall,DepInstMin,DepInstPolicy); if ((CurDepState & DepInstMin) != DepInstMin) break; // we found the correct version, but it is broken. Better try another arch or later again + RemoveSizes(P); + RemoveStates(P); P->CurrentVer = V.Index(); + PkgState[P->ID].InstallVer = V; AddStates(P); Update(P); AddSizes(P); diff --git a/debian/changelog b/debian/changelog index edc82e1d7..16800a9d1 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +apt (0.7.26~exp4) experimental; urgency=low + + * apt-pkg/depcache.cc: + - "reinstall" the correct version for a killed pseudo package + + -- David Kalnischkies <kalnischkies@gmail.com> Sat, 03 Apr 2010 14:58:39 +0200 + apt (0.7.26~exp3) experimental; urgency=low [ Christian Perrier ] |