a bit we increase with a kill, but we should do something more clever… */
       while(recheck.empty() == false)
         for (std::set<unsigned long>::const_iterator p = recheck.begin();
-            p != recheck.end(); ++p) {
+            p != recheck.end();) {
            if (Prog != 0 && Done%20 == 0)
               Prog->Progress(Done);
            PkgIterator P = PkgIterator(*Cache, Cache->PkgP + *p);
               ++killed;
               ++Done;
            }
-           recheck.erase(p);
+           recheck.erase(p++);
         }
 
       /* Okay, we have killed a great amount of pseudopackages -
         unsigned long const G = *g;
         recheck.erase(g);
         if (unlikely(ReInstallPseudoForGroup(G, recheck) == false))
-           _error->Warning(_("Internal error, group '%s' has no installable pseudo package"), GrpIterator(*Cache, Cache->GrpP + *g).Name());
+           _error->Warning(_("Internal error, group '%s' has no installable pseudo package"), GrpIterator(*Cache, Cache->GrpP + G).Name());
       }
    }
 
 
     - do not try PDiff if it is not listed in the Meta file
   * apt-pkg/cacheiterator.h:
     - let pkgCache::Iterator inherent std::iterator
+  * apt-pkg/depcache.cc:
+    - correct "Dangerous iterator usage." pointed out by cppcheck
 
- -- David Kalnischkies <kalnischkies@gmail.com>  Sat, 29 May 2010 15:39:07 +0200
+ -- David Kalnischkies <kalnischkies@gmail.com>  Sat, 29 May 2010 19:02:12 +0200
 
 apt (0.7.26~exp5) experimental; urgency=low