In avifDecoderReset(), continue if foundItem This avoids indenting the body of the original if (!foundItem) statement.
diff --git a/src/read.c b/src/read.c index f9340f2..0d823e2 100644 --- a/src/read.c +++ b/src/read.c
@@ -6380,42 +6380,42 @@ break; } } - if (!foundItem) { - AVIF_CHECKERR(numExtraInputImageItems < AVIF_SAMPLE_TRANSFORM_MAX_NUM_EXTRA_INPUT_IMAGE_ITEMS, + if (foundItem) { + continue; + } + AVIF_CHECKERR(numExtraInputImageItems < AVIF_SAMPLE_TRANSFORM_MAX_NUM_EXTRA_INPUT_IMAGE_ITEMS, AVIF_RESULT_NOT_IMPLEMENTED); + *category = (avifItemCategory)(AVIF_ITEM_SAMPLE_TRANSFORM_INPUT_0_COLOR + numExtraInputImageItems); + const avifItemCategory alphaCategory = + (avifItemCategory)(AVIF_ITEM_SAMPLE_TRANSFORM_INPUT_0_ALPHA + numExtraInputImageItems); + mainItems[*category] = inputImageItem; + ++numExtraInputImageItems; + + AVIF_CHECKRES(avifDecoderItemReadAndParse(decoder, + inputImageItem, + /*isItemInInput=*/AVIF_TRUE, + &data->tileInfos[*category].grid, + &codecType[*category])); + + // Optional alpha auxiliary item + avifBool isAlphaInputImageItemInInput = AVIF_FALSE; + AVIF_CHECKRES(avifMetaFindAlphaItem(data->meta, + mainItems[*category], + &data->tileInfos[*category], + &mainItems[alphaCategory], + &data->tileInfos[alphaCategory], + &isAlphaInputImageItemInInput)); + + AVIF_CHECKERR(!mainItems[alphaCategory] == !mainItems[AVIF_ITEM_ALPHA], AVIF_RESULT_NOT_IMPLEMENTED); + if (mainItems[alphaCategory] != NULL) { + AVIF_CHECKERR(isAlphaInputImageItemInInput == isAlphaItemInInput, AVIF_RESULT_NOT_IMPLEMENTED); + AVIF_CHECKERR((mainItems[*category]->premByID == mainItems[alphaCategory]->id) == + (mainItems[AVIF_ITEM_COLOR]->premByID == mainItems[AVIF_ITEM_ALPHA]->id), AVIF_RESULT_NOT_IMPLEMENTED); - *category = (avifItemCategory)(AVIF_ITEM_SAMPLE_TRANSFORM_INPUT_0_COLOR + numExtraInputImageItems); - const avifItemCategory alphaCategory = - (avifItemCategory)(AVIF_ITEM_SAMPLE_TRANSFORM_INPUT_0_ALPHA + numExtraInputImageItems); - mainItems[*category] = inputImageItem; - ++numExtraInputImageItems; - AVIF_CHECKRES(avifDecoderItemReadAndParse(decoder, - inputImageItem, - /*isItemInInput=*/AVIF_TRUE, - &data->tileInfos[*category].grid, - &codecType[*category])); - - // Optional alpha auxiliary item - avifBool isAlphaInputImageItemInInput = AVIF_FALSE; - AVIF_CHECKRES(avifMetaFindAlphaItem(data->meta, - mainItems[*category], - &data->tileInfos[*category], - &mainItems[alphaCategory], - &data->tileInfos[alphaCategory], - &isAlphaInputImageItemInInput)); - - AVIF_CHECKERR(!mainItems[alphaCategory] == !mainItems[AVIF_ITEM_ALPHA], AVIF_RESULT_NOT_IMPLEMENTED); - if (mainItems[alphaCategory] != NULL) { - AVIF_CHECKERR(isAlphaInputImageItemInInput == isAlphaItemInInput, AVIF_RESULT_NOT_IMPLEMENTED); - AVIF_CHECKERR((mainItems[*category]->premByID == mainItems[alphaCategory]->id) == - (mainItems[AVIF_ITEM_COLOR]->premByID == mainItems[AVIF_ITEM_ALPHA]->id), - AVIF_RESULT_NOT_IMPLEMENTED); - AVIF_CHECKRES(avifDecoderItemReadAndParse(decoder, - mainItems[alphaCategory], - isAlphaInputImageItemInInput, - &data->tileInfos[alphaCategory].grid, - &codecType[alphaCategory])); - } + mainItems[alphaCategory], + isAlphaInputImageItemInInput, + &data->tileInfos[alphaCategory].grid, + &codecType[alphaCategory])); } }