]> git.ipfire.org Git - thirdparty/libsolv.git/commitdiff
- make repo_empty() not reset pool->installed, no not zero loadcallback/state in...
authorMichael Schroeder <mls@suse.de>
Mon, 28 Feb 2011 18:04:17 +0000 (19:04 +0100)
committerMichael Schroeder <mls@suse.de>
Mon, 28 Feb 2011 18:11:26 +0000 (19:11 +0100)
src/repo.c
src/repodata.c

index d0a245d918b889f732b0787bdc5bdcc66516b1f3..fa7f7448ce1502b73a959a9d0b686fa3e6e0327e 100644 (file)
@@ -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;
          }
index 772551d4ff3f1f5552b096a0ba5b02a63a8e434e..e1cbb9932db05ae2ffb0f1a5613d4efce15c13c0 100644 (file)
@@ -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