]> git.saurik.com Git - apt.git/commitdiff
* apt-pkg/depcache.cc:
authorDavid Kalnischkies <kalnischkies@gmail.com>
Tue, 11 May 2010 11:59:02 +0000 (13:59 +0200)
committerDavid Kalnischkies <kalnischkies@gmail.com>
Tue, 11 May 2010 11:59:02 +0000 (13:59 +0200)
  - be doublesure that the killer query is empty before starting reinstall

apt-pkg/depcache.cc
debian/changelog

index 4d1a08eb628da10d00a6f4c379dda58c07afc243..411ae5f6253aa02e766cadb5c583ae5c01b87bd9 100644 (file)
@@ -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… */
       /* 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
 
       /* Okay, we have killed a great amount of pseudopackages -
         we have killed so many that we have now arch "all" packages
index 43f76a18e97f82cf5abebf203b224496eca8e023..845a3758165bf1760fa9853da6ab487277f292ae 100644 (file)
@@ -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
       "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:
 
   [ Jari Aalto ]
   * debian/rules: