From 078a4281aac325d767fa7e75f5878c395962b27c Mon Sep 17 00:00:00 2001 From: Michael Schroeder Date: Mon, 23 Sep 2013 11:42:02 +0200 Subject: [PATCH] also save/restore pool pos in repodata load callback --- src/repodata.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/repodata.c b/src/repodata.c index a983a53..73229f8 100644 --- a/src/repodata.c +++ b/src/repodata.c @@ -3282,6 +3282,7 @@ repodata_load_stub(Repodata *data) Pool *pool = repo->pool; int r, i; struct _Pool_tmpspace oldtmpspace; + Datapos oldpos; if (!pool->loadcallback) { @@ -3290,16 +3291,20 @@ repodata_load_stub(Repodata *data) } data->state = REPODATA_LOADING; - /* save tmp space */ + /* save tmp space and pos */ oldtmpspace = pool->tmpspace; memset(&pool->tmpspace, 0, sizeof(pool->tmpspace)); + oldpos = pool->pos; r = pool->loadcallback(pool, data, pool->loadcallbackdata); - /* restore tmp space */ + /* restore tmp space and pos */ for (i = 0; i < POOL_TMPSPACEBUF; i++) solv_free(pool->tmpspace.buf[i]); pool->tmpspace = oldtmpspace; + if (r && oldpos.repo == repo && oldpos.repodataid == data->repodataid) + memset(&oldpos, 0, sizeof(oldpos)); + pool->pos = oldpos; data->state = r ? REPODATA_AVAILABLE : REPODATA_ERROR; } -- 2.7.4