From ad6a5d7a1af324587d22ddb0d717054d38ab1176 Mon Sep 17 00:00:00 2001 From: Michael Schroeder Date: Fri, 28 Aug 2015 15:40:44 +0200 Subject: [PATCH] Support the meta datapos hack in dataiterator_init A datapos with solvid SOLVID_META and no repodataid set means search all the repo's metadata. --- src/repodata.c | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/src/repodata.c b/src/repodata.c index 4ba1345b..c8542629 100644 --- a/src/repodata.c +++ b/src/repodata.c @@ -1927,19 +1927,19 @@ dataiterator_jump_to_solvid(Dataiterator *di, Id solvid) return; } di->repoid = 0; - di->data = di->repo->repodata + di->pool->pos.repodataid; - di->repodataid = 0; - di->solvid = solvid; - di->state = di_enterrepo; - di->flags |= SEARCH_THISSOLVID; - return; + if (!di->pool->pos.repodataid && di->pool->pos.solvid == SOLVID_META) { + solvid = SOLVID_META; /* META pos hack */ + } else { + di->data = di->repo->repodata + di->pool->pos.repodataid; + di->repodataid = 0; + } } - if (solvid > 0) + else if (solvid > 0) { di->repo = di->pool->solvables[solvid].repo; di->repoid = 0; } - else if (di->repoid > 0) + if (di->repoid > 0) { if (!di->pool->urepos) { @@ -1949,7 +1949,8 @@ dataiterator_jump_to_solvid(Dataiterator *di, Id solvid) di->repoid = 1; di->repo = di->pool->repos[di->repoid]; } - di->repodataid = 1; + if (solvid != SOLVID_POS) + di->repodataid = 1; di->solvid = solvid; if (solvid) di->flags |= SEARCH_THISSOLVID; -- 2.47.2