From: Michael Schroeder Date: Mon, 24 Sep 2018 11:03:16 +0000 (+0200) Subject: Change data_fetch so that it always returns the first entry X-Git-Tag: 0.7.0~28 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=affa917ea48955da705073daee7e549df96bbb66;p=thirdparty%2Flibsolv.git Change data_fetch so that it always returns the first entry It did something different for fix/flexarrays. --- diff --git a/src/repopack.h b/src/repopack.h index da809498..29f4babd 100644 --- a/src/repopack.h +++ b/src/repopack.h @@ -205,8 +205,14 @@ data_fetch(unsigned char *dp, KeyValue *kv, Repokey *key) return data_read_ideof(dp, (Id *)&kv->num2, &kv->eof); case REPOKEY_TYPE_FIXARRAY: case REPOKEY_TYPE_FLEXARRAY: - kv->entry = -1; - dp = data_read_id(dp, (Id *)&kv->num); /* number of elements */ + if (!kv->entry) + { + dp = data_read_id(dp, (Id *)&kv->num); /* number of elements */ + if (!kv->num) + return 0; /* illegal */ + } + if (!kv->entry || key->type == REPOKEY_TYPE_FLEXARRAY) + dp = data_read_id(dp, &kv->id); /* schema */ kv->str = (const char *)dp; return dp; default: