From: Michael Schroeder Date: Mon, 28 Feb 2011 18:04:17 +0000 (+0100) Subject: - make repo_empty() not reset pool->installed, no not zero loadcallback/state in... X-Git-Tag: BASE-SuSE-Code-12_1-Branch~126 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=caa618e0bc83f8defb6e04a2f4588144f3d5a95d;p=thirdparty%2Flibsolv.git - make repo_empty() not reset pool->installed, no not zero loadcallback/state in REPODATA_LOADING case --- diff --git a/src/repo.c b/src/repo.c index d0a245d9..fa7f7448 100644 --- a/src/repo.c +++ b/src/repo.c @@ -78,9 +78,6 @@ repo_empty(Repo *repo, int reuseids) int i; pool_freewhatprovides(pool); - if (repo == pool->installed) - pool->installed = 0; - if (reuseids && repo->end == pool->nsolvables) { /* it's ok to reuse the ids. As this is the last repo, we can @@ -119,6 +116,8 @@ repo_free(Repo *repo, int reuseids) Pool *pool = repo->pool; int i; + if (repo == pool->installed) + pool->installed = 0; repo_empty(repo, reuseids); for (i = 0; i < pool->nrepos; i++) /* find repo in pool */ if (pool->repos[i] == repo) @@ -1034,8 +1033,12 @@ repo_add_repodata(Repo *repo, int flags) /* hack: we mis-use REPO_REUSE_REPODATA here */ if (!(flags & REPO_REUSE_REPODATA)) { + /* save state and loadcallback */ + void (*loadcallback)(Repodata *) = data->loadcallback; repodata_freedata(data); repodata_initdata(data, repo, (flags & REPO_LOCALPOOL) ? 1 : 0); + data->state = REPODATA_LOADING; + data->loadcallback = loadcallback; } return data; } diff --git a/src/repodata.c b/src/repodata.c index 772551d4..e1cbb993 100644 --- a/src/repodata.c +++ b/src/repodata.c @@ -2808,8 +2808,7 @@ repodata_load_stub(Repodata *data) } data->state = REPODATA_LOADING; r = pool->loadcallback(pool, data, pool->loadcallbackdata); - if (!r) - data->state = REPODATA_ERROR; + data->state = r ? REPODATA_AVAILABLE : REPODATA_ERROR; } void