From: Klaus Kaempf Date: Sun, 26 Feb 2006 16:29:30 +0000 (+0000) Subject: survive erase iterator X-Git-Tag: BASE-SuSE-SLE-10-SP2-Branch~1878 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=a09c8586384001d3a4ff299fb789d14b919052a0;p=platform%2Fupstream%2Flibzypp.git survive erase iterator --- diff --git a/zypp/pool/PoolImpl.cc b/zypp/pool/PoolImpl.cc index a737bdd..a8b5b47 100644 --- a/zypp/pool/PoolImpl.cc +++ b/zypp/pool/PoolImpl.cc @@ -123,19 +123,23 @@ namespace zypp storeDelete( PoolTraits::DepCapItemContainerT & store_r, const PoolItem & item_r, Dep cap_r ) { CapSet caps = item_r->dep( cap_r ); +XXX << "storeDelete(" << item_r << ")" << endl; for (CapSet::iterator ic = caps.begin(); ic != caps.end(); ++ic) { PoolTraits::CapItemContainerT capitems = store_r[cap_r][ic->index()]; for (PoolTraits::CapItemContainerT::iterator pos = capitems.begin(); - pos != capitems.end(); ++pos) + pos != capitems.end();) { + PoolTraits::CapItemContainerT::iterator next = pos; ++next; if (pos->item == item_r) capitems.erase( pos ); + pos = next; } } } void CapHash::erase( const PoolItem & item_r ) { +XXX << "CapHash::erase(" << item_r << ")" << endl; storeDelete( _store, item_r, Dep::PROVIDES ); storeDelete( _store, item_r, Dep::REQUIRES ); storeDelete( _store, item_r, Dep::CONFLICTS );