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.
108 lines
2.8 KiB
108 lines
2.8 KiB
7 years ago
|
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);
|