Преглед изворни кода

* 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
 		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… */
-      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 -
 	 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)
   * debian/rules:
     - 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 ]
   * debian/rules: