Переглянути джерело

* apt-pkg/depcache.cc:
- be doublesure that the killer query is empty before starting reinstall

David Kalnischkies 16 роки тому
батько
коміт
6248b28e9c
2 змінених файлів з 13 додано та 10 видалено
  1. 11 10
      apt-pkg/depcache.cc
  2. 2 0
      debian/changelog

+ 11 - 10
apt-pkg/depcache.cc

@@ -804,17 +804,18 @@ void pkgDepCache::Update(OpProgress *Prog)
       /* FIXME: recheck breaks proper progress reporting as we don't know
       /* FIXME: recheck breaks proper progress reporting as we don't know
 		how many packages we need to recheck. To lower the effect
 		how many packages we need to recheck. To lower the effect
 		a bit we increase with a kill, but we should do something more clever… */
 		a bit we increase with a kill, but we should do something more clever… */
-      for(std::set<unsigned long>::const_iterator p = recheck.begin();
-	  p != recheck.end(); ++p) {
-	 if (Prog != 0 && Done%20 == 0)
-	    Prog->Progress(Done);
-	 PkgIterator P = PkgIterator(*Cache, Cache->PkgP + *p);
-	 if (RemovePseudoInstalledPkg(P, recheck) == true) {
-	    ++killed;
-	    ++Done;
+      while(recheck.empty() == false)
+	 for (std::set<unsigned long>::const_iterator p = recheck.begin();
+	     p != recheck.end(); ++p) {
+	    if (Prog != 0 && Done%20 == 0)
+	       Prog->Progress(Done);
+	    PkgIterator P = PkgIterator(*Cache, Cache->PkgP + *p);
+	    if (RemovePseudoInstalledPkg(P, recheck) == true) {
+	       ++killed;
+	       ++Done;
+	    }
+	    recheck.erase(p);
 	 }
 	 }
-	 recheck.erase(p);
-      }
 
 
       /* Okay, we have killed a great amount of pseudopackages -
       /* Okay, we have killed a great amount of pseudopackages -
 	 we have killed so many that we have now arch "all" packages
 	 we have killed so many that we have now arch "all" packages

+ 2 - 0
debian/changelog

@@ -11,6 +11,8 @@ apt (0.7.26~exp5) UNRELEASED; urgency=low
       "old" file - thanks to Philipp Weis for noticing! (Closes: #571541)
       "old" file - thanks to Philipp Weis for noticing! (Closes: #571541)
   * debian/rules:
   * debian/rules:
     - remove targets refering to CVS or arch as they are useless
     - remove targets refering to CVS or arch as they are useless
+  * apt-pkg/depcache.cc:
+    - be doublesure that the killer query is empty before starting reinstall
 
 
   [ Jari Aalto ]
   [ Jari Aalto ]
   * debian/rules:
   * debian/rules: