You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
107 lines
2.8 KiB
107 lines
2.8 KiB
diff -Nru imlib-1.9.15.old/gifutil.h imlib-1.9.15/gifutil.h |
|
--- imlib-1.9.15.old/gifutil.h 2015-02-03 00:53:09.742075193 +0000 |
|
+++ imlib-1.9.15/gifutil.h 2015-02-05 19:24:09.848783163 +0000 |
|
@@ -2,7 +2,7 @@ |
|
#define __GIFUTIL_H__ |
|
|
|
static void |
|
-_PrintGifError(GifFileType *gif) |
|
+_PrintGifError(int errorCode) |
|
{ |
|
/* GIFLIB_MAJOR is only defined in libgif >= 4.2.0 */ |
|
/* libgif 4.2.0 has retired PrintGifError() and added GifErrorString() */ |
|
@@ -11,7 +11,7 @@ |
|
/* Static string actually, hence the const char* cast */ |
|
|
|
#if GIFLIB_MAJOR >= 5 |
|
- const char* gifliberr = (const char*) GifErrorString(gif->Error); |
|
+ const char* gifliberr = (const char*) GifErrorString(errorCode); |
|
#else |
|
const char* gifliberr = (const char*) GifErrorString(); |
|
#endif |
|
diff -Nru imlib-1.9.15.old/Imlib/load.c imlib-1.9.15/Imlib/load.c |
|
--- imlib-1.9.15.old/Imlib/load.c 2015-02-03 00:53:09.742075193 +0000 |
|
+++ imlib-1.9.15/Imlib/load.c 2015-02-05 19:30:12.847147998 +0000 |
|
@@ -434,6 +434,19 @@ |
|
#ifdef HAVE_LIBGIF |
|
/*------------------------*/ |
|
/*------------------------*/ |
|
+void |
|
+_CloseGIF(GifFileType *gif) |
|
+{ |
|
+#if GIFLIB_MAJOR > 5 || (GIFLIB_MAJOR == 5 && GIFLIB_MINOR >= 1) |
|
+ int errCode = 0; |
|
+ |
|
+ if (DGifCloseFile(gif, &errCode) != GIF_OK) |
|
+ _PrintGifError(errCode); |
|
+#else |
|
+ DGifCloseFile(gif); |
|
+#endif |
|
+} |
|
+ |
|
unsigned char * |
|
_LoadGIF(ImlibData * id, FILE *f, int *w, int *h, int *t) |
|
{ |
|
@@ -464,10 +477,7 @@ |
|
gif = DGifOpenFileHandle(fd, &errCode); |
|
if (!gif) |
|
{ |
|
- const char* gifliberr = (const char*) GifErrorString(errCode); |
|
- if (gifliberr == NULL) |
|
- gifliberr = "Unknown error"; |
|
- fprintf(stderr, "%s\n", gifliberr); |
|
+ _PrintGifError(errCode); |
|
return NULL; |
|
} |
|
#else |
|
@@ -481,14 +491,14 @@ |
|
{ |
|
if (DGifGetRecordType(gif, &rec) == GIF_ERROR) |
|
{ |
|
- _PrintGifError(gif); |
|
+ _PrintGifError(gif->Error); |
|
rec = TERMINATE_RECORD_TYPE; |
|
} |
|
if ((rec == IMAGE_DESC_RECORD_TYPE) && (!done)) |
|
{ |
|
if (DGifGetImageDesc(gif) == GIF_ERROR) |
|
{ |
|
- _PrintGifError(gif); |
|
+ _PrintGifError(gif->Error); |
|
rec = TERMINATE_RECORD_TYPE; |
|
} |
|
*w = gif->Image.Width; |
|
@@ -500,13 +510,13 @@ |
|
rows = malloc(*h * sizeof(GifRowType *)); |
|
if (!rows) |
|
{ |
|
- DGifCloseFile(gif); |
|
+ _CloseGIF(gif); |
|
return NULL; |
|
} |
|
data = _imlib_malloc_image(*w, *h); |
|
if (!data) |
|
{ |
|
- DGifCloseFile(gif); |
|
+ _CloseGIF(gif); |
|
free(rows); |
|
return NULL; |
|
} |
|
@@ -517,7 +527,7 @@ |
|
rows[i] = malloc(*w * sizeof(GifPixelType)); |
|
if (!rows[i]) |
|
{ |
|
- DGifCloseFile(gif); |
|
+ _CloseGIF(gif); |
|
for (i = 0; i < *h; i++) |
|
if (rows[i]) |
|
free(rows[i]); |
|
@@ -606,7 +616,7 @@ |
|
} |
|
} |
|
} |
|
- DGifCloseFile(gif); |
|
+ _CloseGIF(gif); |
|
for (i = 0; i < *h; i++) |
|
free(rows[i]); |
|
free(rows);
|
|
|