1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
|
From dfba2b34d35ddfd47233293f2f28978e8acfc87c Mon Sep 17 00:00:00 2001
From: Sebastian Pipping <sebastian@pipping.org>
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
|