X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=zypp%2Fsat%2Fdetail%2FPoolImpl.cc;h=89936d34c13956a8518c3870b0d33de775812cb7;hb=ee089e699438d78d81a496418971d44c85c49f47;hp=5a5de13614bc44aabf8257ff9730e2007af86407;hpb=0691d32a75e797f3d616a7f880d2be1e0a7025b0;p=platform%2Fupstream%2Flibzypp.git diff --git a/zypp/sat/detail/PoolImpl.cc b/zypp/sat/detail/PoolImpl.cc index 5a5de13..89936d3 100644 --- a/zypp/sat/detail/PoolImpl.cc +++ b/zypp/sat/detail/PoolImpl.cc @@ -91,6 +91,8 @@ namespace zypp ///////////////////////////////////////////////////////////////// + const bool resusePoolIDs = true; + const std::string & PoolImpl::systemRepoAlias() { static const std::string _val( "@System" ); @@ -103,7 +105,6 @@ namespace zypp return _val; } - ///////////////////////////////////////////////////////////////// static void logSat( CPool *, void *data, int type, const char *logString ) @@ -304,7 +305,9 @@ namespace zypp if ( isSystemRepo( repo_r ) ) _autoinstalled.clear(); eraseRepoInfo( repo_r ); - ::repo_free( repo_r, /*reuseids*/false ); + ::repo_free( repo_r, resusePoolIDs ); + if ( resusePoolIDs && !_pool->urepos ) // If the last repo is removed clear the pool to actually reuse all IDs. + ::pool_freeallrepos( _pool, resusePoolIDs ); } int PoolImpl::_addSolv( CRepo * repo_r, FILE * file_r ) @@ -356,14 +359,14 @@ namespace zypp else if ( blockSize ) { // Free remembered entries - ::repo_free_solvable_block( repo_r, blockBegin, blockSize, /*reuseids*/false ); + ::repo_free_solvable_block( repo_r, blockBegin, blockSize, resusePoolIDs ); blockBegin = blockSize = 0; } } if ( blockSize ) { // Free remembered entries - ::repo_free_solvable_block( repo_r, blockBegin, blockSize, /*reuseids*/false ); + ::repo_free_solvable_block( repo_r, blockBegin, blockSize, resusePoolIDs ); blockBegin = blockSize = 0; } }