Increment lastItemID first when creating an item (#835)
Fix a bug introduced in commit f732a4d240d1562151685b71e822d0ba3a352ad9.
In avifEncoderDataCreateItem(), increment data->lastItemID before
setting item->id equal to data->lastItemID. This is what the original
code did.
Fix https://github.com/AOMediaCodec/libavif/issues/836.
Bug: https://github.com/AOMediaCodec/libavif/issues/820
diff --git a/src/write.c b/src/write.c
index 3d2efde..657bfaa 100644
--- a/src/write.c
+++ b/src/write.c
@@ -151,6 +151,7 @@
static avifEncoderItem * avifEncoderDataCreateItem(avifEncoderData * data, const char * type, const char * infeName, size_t infeNameSize, uint32_t cellIndex)
{
avifEncoderItem * item = (avifEncoderItem *)avifArrayPushPtr(&data->items);
+ ++data->lastItemID;
item->id = data->lastItemID;
memcpy(item->type, type, sizeof(item->type));
item->infeName = infeName;
@@ -160,11 +161,11 @@
if (!avifArrayCreate(&item->mdatFixups, sizeof(avifOffsetFixup), 4)) {
goto error;
}
- ++data->lastItemID;
return item;
error:
avifCodecEncodeOutputDestroy(item->encodeOutput);
+ --data->lastItemID;
avifArrayPop(&data->items);
return NULL;
}