Skip to content

Commit affa917

Browse files
committed
Change data_fetch so that it always returns the first entry
It did something different for fix/flexarrays.
1 parent f83beba commit affa917

1 file changed

Lines changed: 8 additions & 2 deletions

File tree

src/repopack.h

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -205,8 +205,14 @@ data_fetch(unsigned char *dp, KeyValue *kv, Repokey *key)
205205
return data_read_ideof(dp, (Id *)&kv->num2, &kv->eof);
206206
case REPOKEY_TYPE_FIXARRAY:
207207
case REPOKEY_TYPE_FLEXARRAY:
208-
kv->entry = -1;
209-
dp = data_read_id(dp, (Id *)&kv->num); /* number of elements */
208+
if (!kv->entry)
209+
{
210+
dp = data_read_id(dp, (Id *)&kv->num); /* number of elements */
211+
if (!kv->num)
212+
return 0; /* illegal */
213+
}
214+
if (!kv->entry || key->type == REPOKEY_TYPE_FLEXARRAY)
215+
dp = data_read_id(dp, &kv->id); /* schema */
210216
kv->str = (const char *)dp;
211217
return dp;
212218
default:

0 commit comments

Comments
 (0)