From affa917ea48955da705073daee7e549df96bbb66 Mon Sep 17 00:00:00 2001 From: Michael Schroeder Date: Mon, 24 Sep 2018 13:03:16 +0200 Subject: [PATCH] Change data_fetch so that it always returns the first entry It did something different for fix/flexarrays. --- src/repopack.h | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) 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: -- 2.47.3