summaryrefslogtreecommitdiffstats
path: root/abs/extra/libgdiplus/libgdiplus0-giflib5.patch
diff options
context:
space:
mode:
authorBritney Fransen <brfransen@gmail.com>2014-12-20 16:02:59 (GMT)
committerBritney Fransen <brfransen@gmail.com>2014-12-20 16:02:59 (GMT)
commitf7ae4ba2fd32b939353f06c9f39d7dcdbd229601 (patch)
tree6ec7be5ba972e0f5de80b0d1174b3bed9be01d38 /abs/extra/libgdiplus/libgdiplus0-giflib5.patch
parent26a4cb523ef1beed943cdccecd508c357f035d39 (diff)
downloadlinhes_pkgbuild-f7ae4ba2fd32b939353f06c9f39d7dcdbd229601.zip
linhes_pkgbuild-f7ae4ba2fd32b939353f06c9f39d7dcdbd229601.tar.gz
linhes_pkgbuild-f7ae4ba2fd32b939353f06c9f39d7dcdbd229601.tar.bz2
libgdiplus: update to 3.8
Diffstat (limited to 'abs/extra/libgdiplus/libgdiplus0-giflib5.patch')
-rw-r--r--abs/extra/libgdiplus/libgdiplus0-giflib5.patch153
1 files changed, 153 insertions, 0 deletions
diff --git a/abs/extra/libgdiplus/libgdiplus0-giflib5.patch b/abs/extra/libgdiplus/libgdiplus0-giflib5.patch
new file mode 100644
index 0000000..0f48e08
--- /dev/null
+++ b/abs/extra/libgdiplus/libgdiplus0-giflib5.patch
@@ -0,0 +1,153 @@
+---
+ src/gifcodec.c | 50 +++++++++++++++++++++++++++++++++++++++++---------
+ 1 file changed, 41 insertions(+), 9 deletions(-)
+
+Index: libgdiplus-2.10.9/src/gifcodec.c
+===================================================================
+--- libgdiplus-2.10.9.orig/src/gifcodec.c
++++ libgdiplus-2.10.9/src/gifcodec.c
+@@ -39,8 +39,15 @@ GUID gdip_gif_image_format_guid = {0xb96
+
+ #include "gifcodec.h"
+
++#if !defined(GIFLIB_MAJOR) || GIFLIB_MAJOR < 5
+ /* giflib declares this incorrectly as EgifOpen */
+ extern GifFileType *EGifOpen(void *userData, OutputFunc writeFunc);
++#endif
++#if !defined(GIFLIB_MAJOR) || !(GIFLIB_MAJOR > 5 || \
++ (GIFLIB_MAJOR == 5 && GIFLIB_MINOR >= 1))
++# define DGifCloseFile(a, b) DGifCloseFile(a)
++# define EGifCloseFile(a, b) EGifCloseFile(a)
++#endif
+
+ /* Data structure used for callback */
+ typedef struct
+@@ -105,7 +112,7 @@ gdip_gif_inputfunc (GifFileType *gif, Gi
+ */
+
+ static int
+-AddExtensionBlockMono(SavedImage *New, int Len, BYTE ExtData[])
++AddExtensionBlockMono(SavedImage *New, int Len, int func, BYTE ExtData[])
+ {
+ ExtensionBlock *ep;
+
+@@ -129,7 +136,7 @@ AddExtensionBlockMono(SavedImage *New, i
+
+ if (ExtData) {
+ memcpy(ep->Bytes, ExtData, Len);
+- ep->Function = New->Function;
++ ep->Function = func;
+ }
+
+ return (GIF_OK);
+@@ -232,20 +239,20 @@ DGifSlurpMono(GifFileType * GifFile, Sav
+ }
+
+ case EXTENSION_RECORD_TYPE: {
+- if (DGifGetExtension(GifFile, &temp_save.Function, &ExtData) == GIF_ERROR) {
++ int func;
++ if (DGifGetExtension(GifFile, &func, &ExtData) == GIF_ERROR) {
+ return (GIF_ERROR);
+ }
+
+ while (ExtData != NULL) {
+ /* Create an extension block with our data */
+- if (AddExtensionBlockMono(&temp_save, ExtData[0], &ExtData[1]) == GIF_ERROR) {
++ if (AddExtensionBlockMono(&temp_save, func, ExtData[0], &ExtData[1]) == GIF_ERROR) {
+ return (GIF_ERROR);
+ }
+
+ if (DGifGetExtensionNext(GifFile, &ExtData) == GIF_ERROR) {
+ return (GIF_ERROR);
+ }
+- temp_save.Function = 0;
+ }
+ break;
+ }
+@@ -303,12 +310,19 @@ gdip_load_gif_image (void *stream, GpIma
+ result = NULL;
+ loop_counter = FALSE;
+
++#if GIFLIB_MAJOR < 5
+ if (from_file) {
+ gif = DGifOpen(stream, &gdip_gif_fileinputfunc);
+ } else {
+ gif = DGifOpen (stream, &gdip_gif_inputfunc);
+ }
+-
++#else
++ if (from_file)
++ gif = DGifOpen(stream, &gdip_gif_fileinputfunc, NULL);
++ else
++ gif = DGifOpen(stream, &gdip_gif_inputfunc, NULL);
++#endif
++
+ if (gif == NULL) {
+ goto error;
+ }
+@@ -581,7 +595,7 @@ gdip_load_gif_image (void *stream, GpIma
+ }
+
+ FreeExtensionMono(&global_extensions);
+- DGifCloseFile (gif);
++ DGifCloseFile (gif, NULL);
+
+ *image = result;
+ return Ok;
+@@ -597,7 +611,7 @@ error:
+
+ if (gif != NULL) {
+ FreeExtensionMono (&global_extensions);
+- DGifCloseFile (gif);
++ DGifCloseFile (gif, NULL);
+ }
+
+ *image = NULL;
+@@ -660,11 +674,22 @@ gdip_save_gif_image (void *stream, GpIma
+ return InvalidParameter;
+ }
+
++#if GIFLIB_MAJOR < 5
+ if (from_file) {
+ fp = EGifOpenFileName (stream, 0);
+ } else {
+ fp = EGifOpen (stream, gdip_gif_outputfunc);
+ }
++#else
++ if (from_file)
++ fp = EGifOpenFileName (stream, 0, NULL);
++ else
++ fp = EGifOpen (stream, gdip_gif_outputfunc, NULL);
++#define MakeMapObject GifMakeMapObject
++#define FreeMapObject GifFreeMapObject
++#define QuantizeBuffer GifQuantizeBuffer
++#define BitSize GifBitSize
++#endif
+
+ if (!fp) {
+ return FileNotFound;
+@@ -848,8 +873,15 @@ gdip_save_gif_image (void *stream, GpIma
+ Buffer[0] = 1;
+ Buffer[1] = ptr[0];
+ Buffer[2] = ptr[1];
++#if GIFLIB_MAJOR < 5
+ EGifPutExtensionFirst(fp, APPLICATION_EXT_FUNC_CODE, 11, "NETSCAPE2.0");
+ EGifPutExtensionLast(fp, APPLICATION_EXT_FUNC_CODE, 3, Buffer);
++#else
++ EGifPutExtensionLeader(fp, APPLICATION_EXT_FUNC_CODE);
++ EGifPutExtensionBlock(fp, 11, "NETSCAPE2.0");
++ EGifPutExtensionBlock(fp, 3, Buffer);
++ EGifPutExtensionTrailer(fp);
++#endif
+ }
+ }
+
+@@ -923,7 +955,7 @@ gdip_save_gif_image (void *stream, GpIma
+ }
+ }
+
+- EGifCloseFile (fp);
++ EGifCloseFile (fp, NULL);
+
+ return Ok;
+