From: Michael Schroeder Date: Mon, 28 Mar 2011 10:02:22 +0000 (+0200) Subject: - save tmpspace when calling the repodata load callback X-Git-Tag: BASE-SuSE-Code-12_1-Branch~84 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ceb91ee51edcdc2017526184035a3731394e003c;p=thirdparty%2Flibsolv.git - save tmpspace when calling the repodata load callback --- diff --git a/src/repodata.c b/src/repodata.c index df120ac5..4246ee3c 100644 --- a/src/repodata.c +++ b/src/repodata.c @@ -2783,7 +2783,8 @@ repodata_load_stub(Repodata *data) { Repo *repo = data->repo; Pool *pool = repo->pool; - int r; + int r, i; + struct _Pool_tmpspace oldtmpspace; if (!pool->loadcallback) { @@ -2791,7 +2792,18 @@ repodata_load_stub(Repodata *data) return; } data->state = REPODATA_LOADING; + + /* save tmp space */ + oldtmpspace = pool->tmpspace; + memset(&pool->tmpspace, 0, sizeof(pool->tmpspace)); + r = pool->loadcallback(pool, data, pool->loadcallbackdata); + + /* restore tmp space */ + for (i = 0; i < POOL_TMPSPACEBUF; i++) + sat_free(pool->tmpspace.buf[i]); + pool->tmpspace = oldtmpspace; + data->state = r ? REPODATA_AVAILABLE : REPODATA_ERROR; }