From: Michael Schroeder Date: Fri, 7 Nov 2008 17:16:35 +0000 (+0000) Subject: - fix solvid setting X-Git-Tag: BASE-SuSE-Code-12_1-Branch~308^2~81 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b9e3d424ef0670decb7bdb15a83ceeb914b2a04d;p=thirdparty%2Flibsolv.git - fix solvid setting - make setpos on last element --- diff --git a/src/repodata.c b/src/repodata.c index 6186c76b..96db4728 100644 --- a/src/repodata.c +++ b/src/repodata.c @@ -1080,6 +1080,8 @@ dataiterator_step(Dataiterator *di) di->dp = solvid2data(di->data, di->solvid, &schema); if (!di->dp) goto di_nextrepodata; + if (di->solvid == SOLVID_POS) + di->solvid = di->pool->pos.solvid; /* reset key iterator */ di->keyp = di->data->schemadata + di->data->schemata[schema]; /* FALLTHROUGH */ @@ -1280,7 +1282,7 @@ dataiterator_entersub(Dataiterator *di) void dataiterator_setpos(Dataiterator *di) { - if (di->kv.eof) + if (di->kv.eof == 2) { pool_clear_pos(di->pool); return; @@ -1295,7 +1297,7 @@ dataiterator_setpos(Dataiterator *di) void dataiterator_setpos_parent(Dataiterator *di) { - if (!di->kv.parent) + if (!di->kv.parent || di->kv.parent->eof == 2) { pool_clear_pos(di->pool); return;