Author: mlschroe Date: Mon Oct 13 16:09:54 2008 New Revision: 11323 URL: http://svn.opensuse.org/viewcvs/zypp?rev=11323&view=rev Log: - add dataiterator_setpos_parent - check kv.eof in dataiterator_setpos Modified: trunk/sat-solver/src/repo.h trunk/sat-solver/src/repodata.c Modified: trunk/sat-solver/src/repo.h URL: http://svn.opensuse.org/viewcvs/zypp/trunk/sat-solver/src/repo.h?rev=11323&a... ============================================================================== --- trunk/sat-solver/src/repo.h (original) +++ trunk/sat-solver/src/repo.h Mon Oct 13 16:09:54 2008 @@ -283,6 +283,7 @@ void dataiterator_free(Dataiterator *di); int dataiterator_step(Dataiterator *di); void dataiterator_setpos(Dataiterator *di); +void dataiterator_setpos_parent(Dataiterator *di); int dataiterator_match(Dataiterator *di, int flags, const void *match); void dataiterator_skip_attribute(Dataiterator *di); void dataiterator_skip_solvable(Dataiterator *di); Modified: trunk/sat-solver/src/repodata.c URL: http://svn.opensuse.org/viewcvs/zypp/trunk/sat-solver/src/repodata.c?rev=113... ============================================================================== --- trunk/sat-solver/src/repodata.c (original) +++ trunk/sat-solver/src/repodata.c Mon Oct 13 16:09:54 2008 @@ -964,6 +964,11 @@ if (p == SOLVID_POS) { di->repo = di->pool->pos.repo; + if (!di->repo) + { + di->state = di_bye; + return; + } di->data = di->repo->repodata + di->pool->pos.repodataid; di->repoid = -1; di->repodataid = -1; @@ -1209,6 +1214,11 @@ void dataiterator_setpos(Dataiterator *di) { + if (di->kv.eof) + { + memset(&di->pool->pos, 0, sizeof(di->pool->pos)); + return; + } di->pool->pos.repo = di->repo; di->pool->pos.repodataid = di->data - di->repo->repodata; di->pool->pos.schema = di->kv.id; @@ -1216,6 +1226,20 @@ } void +dataiterator_setpos_parent(Dataiterator *di) +{ + if (!di->kv.parent) + { + memset(&di->pool->pos, 0, sizeof(di->pool->pos)); + return; + } + di->pool->pos.repo = di->repo; + di->pool->pos.repodataid = di->data - di->repo->repodata; + di->pool->pos.schema = di->kv.parent->id; + di->pool->pos.dp = (unsigned char *)di->kv.parent->str - di->data->incoredata; +} + +void dataiterator_skip_attribute(Dataiterator *di) { if (di->state == di_nextsolvableattr) -- To unsubscribe, e-mail: zypp-commit+unsubscribe@opensuse.org For additional commands, e-mail: zypp-commit+help@opensuse.org