Fix -Wmissing-prototypes and -Wcast-qual warnings
Add 'static' to function signatures of avifImageSplitGrid() and
avifEncoderFindExistingChunk(). This fix was suggested by Pascal
Massimino.
Change the type of the cellImages parameter of avifEncoderAddImageGrid()
from:
const avifImage ** cellImages
to
const avifImage * const * cellImages
so that we can cast a avifImage ** pointer to the new type without the
-Wcast-qual warning. This fix was suggested by Yuan Tong.
Fix https://crbug.com/oss-fuzz/28622.
diff --git a/apps/avifenc.c b/apps/avifenc.c
index 56169df..daabbde 100644
--- a/apps/avifenc.c
+++ b/apps/avifenc.c
@@ -272,7 +272,7 @@
return AVIF_TRUE;
}
-avifBool avifImageSplitGrid(const avifImage * gridSplitImage, uint32_t gridCols, uint32_t gridRows, avifImage ** gridCells)
+static avifBool avifImageSplitGrid(const avifImage * gridSplitImage, uint32_t gridCols, uint32_t gridRows, avifImage ** gridCells)
{
if ((gridSplitImage->width % gridCols) != 0) {
fprintf(stderr, "ERROR: Can't split image width (%u) evenly into %u columns.\n", gridSplitImage->width, gridCols);
@@ -994,7 +994,7 @@
if (gridDimsCount > 0) {
avifResult addImageResult = avifEncoderAddImageGrid(
- encoder, (uint8_t)gridDims[0], (uint8_t)gridDims[1], (const avifImage **)gridCells, AVIF_ADD_IMAGE_FLAG_SINGLE);
+ encoder, (uint8_t)gridDims[0], (uint8_t)gridDims[1], (const avifImage * const *)gridCells, AVIF_ADD_IMAGE_FLAG_SINGLE);
if (addImageResult != AVIF_RESULT_OK) {
fprintf(stderr, "ERROR: Failed to encode image: %s\n", avifResultToString(addImageResult));
returnCode = 1;
diff --git a/include/avif/avif.h b/include/avif/avif.h
index c65ba9c..96fdaec 100644
--- a/include/avif/avif.h
+++ b/include/avif/avif.h
@@ -865,7 +865,11 @@
//
AVIF_API avifResult avifEncoderAddImage(avifEncoder * encoder, const avifImage * image, uint64_t durationInTimescales, uint32_t addImageFlags);
-AVIF_API avifResult avifEncoderAddImageGrid(avifEncoder * encoder, uint8_t gridCols, uint8_t gridRows, const avifImage ** cellImages, uint32_t addImageFlags);
+AVIF_API avifResult avifEncoderAddImageGrid(avifEncoder * encoder,
+ uint8_t gridCols,
+ uint8_t gridRows,
+ const avifImage * const * cellImages,
+ uint32_t addImageFlags);
AVIF_API avifResult avifEncoderFinish(avifEncoder * encoder, avifRWData * output);
// Codec-specific, optional "advanced" tuning settings, in the form of string key/value pairs. These
diff --git a/src/write.c b/src/write.c
index a6c3671..f45afcd 100644
--- a/src/write.c
+++ b/src/write.c
@@ -382,7 +382,7 @@
static avifResult avifEncoderAddImageInternal(avifEncoder * encoder,
uint8_t gridCols,
uint8_t gridRows,
- const avifImage ** cellImages,
+ const avifImage * const * cellImages,
uint64_t durationInTimescales,
uint32_t addImageFlags)
{
@@ -626,13 +626,13 @@
return avifEncoderAddImageInternal(encoder, 1, 1, &image, durationInTimescales, addImageFlags);
}
-avifResult avifEncoderAddImageGrid(avifEncoder * encoder, uint8_t gridCols, uint8_t gridRows, const avifImage ** cellImages, uint32_t addImageFlags)
+avifResult avifEncoderAddImageGrid(avifEncoder * encoder, uint8_t gridCols, uint8_t gridRows, const avifImage * const * cellImages, uint32_t addImageFlags)
{
return avifEncoderAddImageInternal(
encoder, gridCols, gridRows, cellImages, 1, addImageFlags | AVIF_ADD_IMAGE_FLAG_SINGLE); // only single image grids are supported
}
-size_t avifEncoderFindExistingChunk(avifRWStream * s, size_t mdatStartOffset, const uint8_t * data, size_t size)
+static size_t avifEncoderFindExistingChunk(avifRWStream * s, size_t mdatStartOffset, const uint8_t * data, size_t size)
{
const size_t mdatCurrentOffset = avifRWStreamOffset(s);
const size_t mdatSearchSize = mdatCurrentOffset - mdatStartOffset;