summaryrefslogtreecommitdiff
path: root/apt-pkg/depcache.cc
diff options
context:
space:
mode:
authorMichael Vogt <michael.vogt@ubuntu.com>2010-05-25 15:55:05 +0200
committerMichael Vogt <michael.vogt@ubuntu.com>2010-05-25 15:55:05 +0200
commitff371080d8672b94ef289f1162704e74959b4ddf (patch)
treeef1009f20f84b4d53a8f837f02411c7789b89fc4 /apt-pkg/depcache.cc
parent921a3ce01c2595e9df9ff20bdd259e14733dcb16 (diff)
parent642ebc1a04c9c7915474c57f1143a9389ee6636a (diff)
merged lp:~donkult/apt/sid
Diffstat (limited to 'apt-pkg/depcache.cc')
-rw-r--r--apt-pkg/depcache.cc21
1 files changed, 11 insertions, 10 deletions
diff --git a/apt-pkg/depcache.cc b/apt-pkg/depcache.cc
index 4d1a08eb6..411ae5f62 100644
--- a/apt-pkg/depcache.cc
+++ b/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