Просмотр исходного кода

* apt-pkg/depcache.cc:
- "reinstall" the correct version for a killed pseudo package

David Kalnischkies лет назад: 16
Родитель
Сommit
c753eec1d1
2 измененных файлов с 12 добавлено и 2 удалено
  1. 5 2
      apt-pkg/depcache.cc
  2. 7 0
      debian/changelog

+ 5 - 2
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);

+ 7 - 0
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 ]