From dfba2b34d35ddfd47233293f2f28978e8acfc87c Mon Sep 17 00:00:00 2001 From: Sebastian Pipping Date: Wed, 14 Mar 2018 21:18:14 +0100 Subject: [PATCH] Address clash of export reallocarray with glibc MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit .. by renaming the exported symbol and the related function in code and where it's used. Bug: https://bugs.gentoo.org/637438 Compile error was: /usr/include/gif_lib.h:248:51: error: declaration of ‘void* reallocarray(void*, size_t, size_t)’ has a different exception specifier reallocarray(void *optr, size_t nmemb, size_t size); ^ [..] /usr/include/stdlib.h:443:14: error: from previous declaration ‘void* reallocarray(void*, size_t, size_t) throw ()’ extern void *reallocarray (void *__ptr, size_t __nmemb, size_t __size) --- lib/dgif_lib.c | 4 ++-- lib/gif_lib.h | 2 +- lib/gifalloc.c | 10 +++++----- lib/openbsd-reallocarray.c | 2 +- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/lib/dgif_lib.c b/lib/dgif_lib.c index 66a1d6a..f0e0385 100644 --- a/lib/dgif_lib.c +++ b/lib/dgif_lib.c @@ -396,7 +396,7 @@ DGifGetImageDesc(GifFileType *GifFile) if (GifFile->SavedImages) { SavedImage* new_saved_images = - (SavedImage *)reallocarray(GifFile->SavedImages, + (SavedImage *)openbsd_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 @@ DGifSlurp(GifFileType *GifFile) if (ImageSize > (SIZE_MAX / sizeof(GifPixelType))) { return GIF_ERROR; } - sp->RasterBits = (unsigned char *)reallocarray(NULL, ImageSize, + sp->RasterBits = (unsigned char *)openbsd_reallocarray(NULL, ImageSize, sizeof(GifPixelType)); if (sp->RasterBits == NULL) { diff --git a/lib/gif_lib.h b/lib/gif_lib.h index 078930c..cefc3bb 100644 --- a/lib/gif_lib.h +++ b/lib/gif_lib.h @@ -245,7 +245,7 @@ extern ColorMapObject *GifUnionColorMap(const ColorMapObject *ColorIn1, extern int GifBitSize(int n); extern void * -reallocarray(void *optr, size_t nmemb, size_t size); +openbsd_reallocarray(void *optr, size_t nmemb, size_t size); /****************************************************************************** Support for the in-core structures allocation (slurp mode). diff --git a/lib/gifalloc.c b/lib/gifalloc.c index 3b51868..1394cfa 100644 --- a/lib/gifalloc.c +++ b/lib/gifalloc.c @@ -188,7 +188,7 @@ GifUnionColorMap(const ColorMapObject *ColorIn1, /* perhaps we can shrink the map? */ if (RoundUpTo < ColorUnion->ColorCount) { - GifColorType *new_map = (GifColorType *)reallocarray(Map, + GifColorType *new_map = (GifColorType *)openbsd_reallocarray(Map, RoundUpTo, sizeof(GifColorType)); if( new_map == NULL ) { GifFreeMapObject(ColorUnion); @@ -232,7 +232,7 @@ GifAddExtensionBlock(int *ExtensionBlockCount, if (*ExtensionBlocks == NULL) *ExtensionBlocks=(ExtensionBlock *)malloc(sizeof(ExtensionBlock)); else { - ExtensionBlock* ep_new = (ExtensionBlock *)reallocarray + ExtensionBlock* ep_new = (ExtensionBlock *)openbsd_reallocarray (*ExtensionBlocks, (*ExtensionBlockCount + 1), sizeof(ExtensionBlock)); if( ep_new == NULL ) @@ -325,7 +325,7 @@ GifMakeSavedImage(GifFileType *GifFile, const SavedImage *CopyFrom) if (GifFile->SavedImages == NULL) GifFile->SavedImages = (SavedImage *)malloc(sizeof(SavedImage)); else - GifFile->SavedImages = (SavedImage *)reallocarray(GifFile->SavedImages, + GifFile->SavedImages = (SavedImage *)openbsd_reallocarray(GifFile->SavedImages, (GifFile->ImageCount + 1), sizeof(SavedImage)); if (GifFile->SavedImages == NULL) @@ -355,7 +355,7 @@ GifMakeSavedImage(GifFileType *GifFile, const SavedImage *CopyFrom) } /* next, the raster */ - sp->RasterBits = (unsigned char *)reallocarray(NULL, + sp->RasterBits = (unsigned char *)openbsd_reallocarray(NULL, (CopyFrom->ImageDesc.Height * CopyFrom->ImageDesc.Width), sizeof(GifPixelType)); @@ -369,7 +369,7 @@ GifMakeSavedImage(GifFileType *GifFile, const SavedImage *CopyFrom) /* finally, the extension blocks */ if (sp->ExtensionBlocks != NULL) { - sp->ExtensionBlocks = (ExtensionBlock *)reallocarray(NULL, + sp->ExtensionBlocks = (ExtensionBlock *)openbsd_reallocarray(NULL, CopyFrom->ExtensionBlockCount, sizeof(ExtensionBlock)); if (sp->ExtensionBlocks == NULL) { diff --git a/lib/openbsd-reallocarray.c b/lib/openbsd-reallocarray.c index aa70686..b922b01 100644 --- a/lib/openbsd-reallocarray.c +++ b/lib/openbsd-reallocarray.c @@ -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) +openbsd_reallocarray(void *optr, size_t nmemb, size_t size) { if ((nmemb >= MUL_NO_OVERFLOW || size >= MUL_NO_OVERFLOW) && nmemb > 0 && SIZE_MAX / nmemb < size) { -- 2.17.0.rc2