Move the declaration from gif_lib.h to gif_lib_private.h to solve conflicts when some .c-file #includes both stdlib.h and gif_lib.h. See also https://sourceforge.net/p/giflib/bugs/110/ diff -ur giflib-5.1.4.orig/lib/dgif_lib.c giflib-5.1.4/lib/dgif_lib.c --- giflib-5.1.4.orig/lib/dgif_lib.c 2018-02-28 20:31:02.294682673 +0100 +++ giflib-5.1.4/lib/dgif_lib.c 2018-02-28 22:38:11.659126414 +0100 @@ -396,7 +396,7 @@ if (GifFile->SavedImages) { SavedImage* new_saved_images = - (SavedImage *)reallocarray(GifFile->SavedImages, + (SavedImage *)giflib_private_reallocarray(GifFile->SavedImages, (GifFile->ImageCount + 1), sizeof(SavedImage)); if (new_saved_images == NULL) { GifFile->Error = D_GIF_ERR_NOT_ENOUGH_MEM; @@ -1108,7 +1108,7 @@ if (ImageSize > (SIZE_MAX / sizeof(GifPixelType))) { return GIF_ERROR; } - sp->RasterBits = (unsigned char *)reallocarray(NULL, ImageSize, + sp->RasterBits = (unsigned char *)giflib_private_reallocarray(NULL, ImageSize, sizeof(GifPixelType)); if (sp->RasterBits == NULL) { diff -ur giflib-5.1.4.orig/lib/gifalloc.c giflib-5.1.4/lib/gifalloc.c --- giflib-5.1.4.orig/lib/gifalloc.c 2018-02-28 20:31:02.294682673 +0100 +++ giflib-5.1.4/lib/gifalloc.c 2018-02-28 22:38:11.657126423 +0100 @@ -8,7 +8,7 @@ #include #include -#include "gif_lib.h" +#include "gif_lib_private.h" #define MAX(x, y) (((x) > (y)) ? (x) : (y)) @@ -188,7 +188,7 @@ /* perhaps we can shrink the map? */ if (RoundUpTo < ColorUnion->ColorCount) { - GifColorType *new_map = (GifColorType *)reallocarray(Map, + GifColorType *new_map = (GifColorType *)giflib_private_reallocarray(Map, RoundUpTo, sizeof(GifColorType)); if( new_map == NULL ) { GifFreeMapObject(ColorUnion); @@ -232,7 +232,7 @@ if (*ExtensionBlocks == NULL) *ExtensionBlocks=(ExtensionBlock *)malloc(sizeof(ExtensionBlock)); else { - ExtensionBlock* ep_new = (ExtensionBlock *)reallocarray + ExtensionBlock* ep_new = (ExtensionBlock *)giflib_private_reallocarray (*ExtensionBlocks, (*ExtensionBlockCount + 1), sizeof(ExtensionBlock)); if( ep_new == NULL ) @@ -325,7 +325,7 @@ if (GifFile->SavedImages == NULL) GifFile->SavedImages = (SavedImage *)malloc(sizeof(SavedImage)); else - GifFile->SavedImages = (SavedImage *)reallocarray(GifFile->SavedImages, + GifFile->SavedImages = (SavedImage *)giflib_private_reallocarray(GifFile->SavedImages, (GifFile->ImageCount + 1), sizeof(SavedImage)); if (GifFile->SavedImages == NULL) @@ -355,7 +355,7 @@ } /* next, the raster */ - sp->RasterBits = (unsigned char *)reallocarray(NULL, + sp->RasterBits = (unsigned char *)giflib_private_reallocarray(NULL, (CopyFrom->ImageDesc.Height * CopyFrom->ImageDesc.Width), sizeof(GifPixelType)); @@ -369,7 +369,7 @@ /* finally, the extension blocks */ if (sp->ExtensionBlocks != NULL) { - sp->ExtensionBlocks = (ExtensionBlock *)reallocarray(NULL, + sp->ExtensionBlocks = (ExtensionBlock *)giflib_private_reallocarray(NULL, CopyFrom->ExtensionBlockCount, sizeof(ExtensionBlock)); if (sp->ExtensionBlocks == NULL) { diff -ur giflib-5.1.4.orig/lib/gif_lib.h giflib-5.1.4/lib/gif_lib.h --- giflib-5.1.4.orig/lib/gif_lib.h 2018-02-28 20:31:02.294682673 +0100 +++ giflib-5.1.4/lib/gif_lib.h 2018-02-28 20:31:43.135716712 +0100 @@ -244,9 +244,6 @@ GifPixelType ColorTransIn2[]); extern int GifBitSize(int n); -extern void * -reallocarray(void *optr, size_t nmemb, size_t size); - /****************************************************************************** Support for the in-core structures allocation (slurp mode). ******************************************************************************/ diff -ur giflib-5.1.4.orig/lib/gif_lib_private.h giflib-5.1.4/lib/gif_lib_private.h --- giflib-5.1.4.orig/lib/gif_lib_private.h 2018-02-28 20:31:02.294682673 +0100 +++ giflib-5.1.4/lib/gif_lib_private.h 2018-02-28 22:38:11.657126423 +0100 @@ -54,6 +54,9 @@ bool gif89; } GifFilePrivateType; +extern void * +giflib_private_reallocarray(void *optr, size_t nmemb, size_t size); + #endif /* _GIF_LIB_PRIVATE_H */ /* end */ diff -ur giflib-5.1.4.orig/lib/openbsd-reallocarray.c giflib-5.1.4/lib/openbsd-reallocarray.c --- giflib-5.1.4.orig/lib/openbsd-reallocarray.c 2018-02-28 20:31:02.295682659 +0100 +++ giflib-5.1.4/lib/openbsd-reallocarray.c 2018-02-28 22:38:11.656126428 +0100 @@ -27,7 +27,7 @@ #define MUL_NO_OVERFLOW ((size_t)1 << (sizeof(size_t) * 4)) void * -reallocarray(void *optr, size_t nmemb, size_t size) +giflib_private_reallocarray(void *optr, size_t nmemb, size_t size) { if ((nmemb >= MUL_NO_OVERFLOW || size >= MUL_NO_OVERFLOW) && nmemb > 0 && SIZE_MAX / nmemb < size) {