summaryrefslogtreecommitdiff
path: root/apt-pkg
diff options
context:
space:
mode:
authorDavid Kalnischkies <kalnischkies@gmail.com>2010-05-11 13:59:02 +0200
committerDavid Kalnischkies <kalnischkies@gmail.com>2010-05-11 13:59:02 +0200
commit6248b28e9c9013e074120ae74b6a9fccee75c318 (patch)
tree472404ab7b379c139185b86ae0a3d7f116d4c778 /apt-pkg
parentd1aa91622b3e0f7653889cab205e4c5c622162f4 (diff)
* apt-pkg/depcache.cc:
- be doublesure that the killer query is empty before starting reinstall
Diffstat (limited to 'apt-pkg')
-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