summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Kalnischkies <kalnischkies@gmail.com>2010-04-03 17:07:30 +0200
committerDavid Kalnischkies <kalnischkies@gmail.com>2010-04-03 17:07:30 +0200
commitc753eec1d192a56e7f4ba1b07ae766b740185a3f (patch)
treeba29b47c741d837f4f65b4528d094afe056c13e6
parent22326578d84ee9df4b192dd5ba5120098afe97ea (diff)
* apt-pkg/depcache.cc:
- "reinstall" the correct version for a killed pseudo package
-rw-r--r--apt-pkg/depcache.cc7
-rw-r--r--debian/changelog7
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 ]