From 6248b28e9c9013e074120ae74b6a9fccee75c318 Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Tue, 11 May 2010 13:59:02 +0200 Subject: * apt-pkg/depcache.cc: - be doublesure that the killer query is empty before starting reinstall --- apt-pkg/depcache.cc | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) (limited to 'apt-pkg/depcache.cc') 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::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::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 -- cgit v1.2.3-70-g09d2