Commit | Line | Data |
---|---|---|
7ac43c44 HG |
1 | Move the declaration from gif_lib.h to gif_lib_private.h to solve |
2 | conflicts when some .c-file #includes both stdlib.h and gif_lib.h. | |
3 | See also https://sourceforge.net/p/giflib/bugs/110/ | |
4 | ||
5 | diff -ur giflib-5.1.4.orig/lib/dgif_lib.c giflib-5.1.4/lib/dgif_lib.c | |
6 | --- giflib-5.1.4.orig/lib/dgif_lib.c 2018-02-28 20:31:02.294682673 +0100 | |
7 | +++ giflib-5.1.4/lib/dgif_lib.c 2018-02-28 22:38:11.659126414 +0100 | |
8 | @@ -396,7 +396,7 @@ | |
9 | ||
10 | if (GifFile->SavedImages) { | |
11 | SavedImage* new_saved_images = | |
12 | - (SavedImage *)reallocarray(GifFile->SavedImages, | |
13 | + (SavedImage *)giflib_private_reallocarray(GifFile->SavedImages, | |
14 | (GifFile->ImageCount + 1), sizeof(SavedImage)); | |
15 | if (new_saved_images == NULL) { | |
16 | GifFile->Error = D_GIF_ERR_NOT_ENOUGH_MEM; | |
17 | @@ -1108,7 +1108,7 @@ | |
18 | if (ImageSize > (SIZE_MAX / sizeof(GifPixelType))) { | |
19 | return GIF_ERROR; | |
20 | } | |
21 | - sp->RasterBits = (unsigned char *)reallocarray(NULL, ImageSize, | |
22 | + sp->RasterBits = (unsigned char *)giflib_private_reallocarray(NULL, ImageSize, | |
23 | sizeof(GifPixelType)); | |
24 | ||
25 | if (sp->RasterBits == NULL) { | |
26 | diff -ur giflib-5.1.4.orig/lib/gifalloc.c giflib-5.1.4/lib/gifalloc.c | |
27 | --- giflib-5.1.4.orig/lib/gifalloc.c 2018-02-28 20:31:02.294682673 +0100 | |
28 | +++ giflib-5.1.4/lib/gifalloc.c 2018-02-28 22:38:11.657126423 +0100 | |
29 | @@ -8,7 +8,7 @@ | |
30 | #include <stdio.h> | |
31 | #include <string.h> | |
32 | ||
33 | -#include "gif_lib.h" | |
34 | +#include "gif_lib_private.h" | |
35 | ||
36 | #define MAX(x, y) (((x) > (y)) ? (x) : (y)) | |
37 | ||
38 | @@ -188,7 +188,7 @@ | |
39 | ||
40 | /* perhaps we can shrink the map? */ | |
41 | if (RoundUpTo < ColorUnion->ColorCount) { | |
42 | - GifColorType *new_map = (GifColorType *)reallocarray(Map, | |
43 | + GifColorType *new_map = (GifColorType *)giflib_private_reallocarray(Map, | |
44 | RoundUpTo, sizeof(GifColorType)); | |
45 | if( new_map == NULL ) { | |
46 | GifFreeMapObject(ColorUnion); | |
47 | @@ -232,7 +232,7 @@ | |
48 | if (*ExtensionBlocks == NULL) | |
49 | *ExtensionBlocks=(ExtensionBlock *)malloc(sizeof(ExtensionBlock)); | |
50 | else { | |
51 | - ExtensionBlock* ep_new = (ExtensionBlock *)reallocarray | |
52 | + ExtensionBlock* ep_new = (ExtensionBlock *)giflib_private_reallocarray | |
53 | (*ExtensionBlocks, (*ExtensionBlockCount + 1), | |
54 | sizeof(ExtensionBlock)); | |
55 | if( ep_new == NULL ) | |
56 | @@ -325,7 +325,7 @@ | |
57 | if (GifFile->SavedImages == NULL) | |
58 | GifFile->SavedImages = (SavedImage *)malloc(sizeof(SavedImage)); | |
59 | else | |
60 | - GifFile->SavedImages = (SavedImage *)reallocarray(GifFile->SavedImages, | |
61 | + GifFile->SavedImages = (SavedImage *)giflib_private_reallocarray(GifFile->SavedImages, | |
62 | (GifFile->ImageCount + 1), sizeof(SavedImage)); | |
63 | ||
64 | if (GifFile->SavedImages == NULL) | |
65 | @@ -355,7 +355,7 @@ | |
66 | } | |
67 | ||
68 | /* next, the raster */ | |
69 | - sp->RasterBits = (unsigned char *)reallocarray(NULL, | |
70 | + sp->RasterBits = (unsigned char *)giflib_private_reallocarray(NULL, | |
71 | (CopyFrom->ImageDesc.Height * | |
72 | CopyFrom->ImageDesc.Width), | |
73 | sizeof(GifPixelType)); | |
74 | @@ -369,7 +369,7 @@ | |
75 | ||
76 | /* finally, the extension blocks */ | |
77 | if (sp->ExtensionBlocks != NULL) { | |
78 | - sp->ExtensionBlocks = (ExtensionBlock *)reallocarray(NULL, | |
79 | + sp->ExtensionBlocks = (ExtensionBlock *)giflib_private_reallocarray(NULL, | |
80 | CopyFrom->ExtensionBlockCount, | |
81 | sizeof(ExtensionBlock)); | |
82 | if (sp->ExtensionBlocks == NULL) { | |
83 | diff -ur giflib-5.1.4.orig/lib/gif_lib.h giflib-5.1.4/lib/gif_lib.h | |
84 | --- giflib-5.1.4.orig/lib/gif_lib.h 2018-02-28 20:31:02.294682673 +0100 | |
85 | +++ giflib-5.1.4/lib/gif_lib.h 2018-02-28 20:31:43.135716712 +0100 | |
86 | @@ -244,9 +244,6 @@ | |
87 | GifPixelType ColorTransIn2[]); | |
88 | extern int GifBitSize(int n); | |
89 | ||
90 | -extern void * | |
91 | -reallocarray(void *optr, size_t nmemb, size_t size); | |
92 | - | |
93 | /****************************************************************************** | |
94 | Support for the in-core structures allocation (slurp mode). | |
95 | ******************************************************************************/ | |
96 | diff -ur giflib-5.1.4.orig/lib/gif_lib_private.h giflib-5.1.4/lib/gif_lib_private.h | |
97 | --- giflib-5.1.4.orig/lib/gif_lib_private.h 2018-02-28 20:31:02.294682673 +0100 | |
98 | +++ giflib-5.1.4/lib/gif_lib_private.h 2018-02-28 22:38:11.657126423 +0100 | |
99 | @@ -54,6 +54,9 @@ | |
100 | bool gif89; | |
101 | } GifFilePrivateType; | |
102 | ||
103 | +extern void * | |
104 | +giflib_private_reallocarray(void *optr, size_t nmemb, size_t size); | |
105 | + | |
106 | #endif /* _GIF_LIB_PRIVATE_H */ | |
107 | ||
108 | /* end */ | |
109 | diff -ur giflib-5.1.4.orig/lib/openbsd-reallocarray.c giflib-5.1.4/lib/openbsd-reallocarray.c | |
110 | --- giflib-5.1.4.orig/lib/openbsd-reallocarray.c 2018-02-28 20:31:02.295682659 +0100 | |
111 | +++ giflib-5.1.4/lib/openbsd-reallocarray.c 2018-02-28 22:38:11.656126428 +0100 | |
112 | @@ -27,7 +27,7 @@ | |
113 | #define MUL_NO_OVERFLOW ((size_t)1 << (sizeof(size_t) * 4)) | |
114 | ||
115 | void * | |
116 | -reallocarray(void *optr, size_t nmemb, size_t size) | |
117 | +giflib_private_reallocarray(void *optr, size_t nmemb, size_t size) | |
118 | { | |
119 | if ((nmemb >= MUL_NO_OVERFLOW || size >= MUL_NO_OVERFLOW) && | |
120 | nmemb > 0 && SIZE_MAX / nmemb < size) { |