]> git.saurik.com Git - apt.git/blobdiff - apt-pkg/depcache.cc
* apt-pkg/contrib/configuration.cc:
[apt.git] / apt-pkg / depcache.cc
index 75f69ee116a13b3c88ae7e0ce77ff9642830b2a8..0f07de2fea80068ec2ea2048e1c74bd01e67b5af 100644 (file)
@@ -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);