unsigned char *
loader_gif(FILE *f, int *w, int *h, int *t)
{
+@@ -29,6 +29,7 @@
+ int intjump[] = {8, 8, 4, 2};
+ int istransp, transp;
+ int fd;
++ int giferr;
+
+ done = 0;
+ istransp = 0;
@@ -30,7 +36,7 @@
fd = fileno(f);
/* Apparently rewind(f) isn't sufficient */
lseek(fd, (long) 0, 0);
- gif = DGifOpenFileHandle(fd);
-+ gif = DGifOpenFileHandle(fd, NULL);
++ gif = DGifOpenFileHandle(fd, &giferr);
transp = -1;
data = NULL;
rec = TERMINATE_RECORD_TYPE;
}
*w = gif->Image.Width;
+@@ -68,13 +69,13 @@
+ rows = malloc(*h * sizeof(GifRowType *));
+ if (!rows)
+ {
+- DGifCloseFile(gif);
++ DGifCloseFile(gif, &giferr);
+ return NULL;
+ }
+ data = _gdk_malloc_image(*w, *h);
+ if (!data)
+ {
+- DGifCloseFile(gif);
++ DGifCloseFile(gif, &giferr);
+ free(rows);
+ return NULL;
+ }
+@@ -85,7 +86,7 @@
+ rows[i] = malloc(*w * sizeof(GifPixelType));
+ if (!rows[i])
+ {
+- DGifCloseFile(gif);
++ DGifCloseFile(gif, &giferr);
+ for (i = 0; i < *h; i++)
+ if (rows[i])
+ free(rows[i]);
+@@ -174,7 +175,7 @@
+ }
+ }
+ }
+- DGifCloseFile(gif);
++ DGifCloseFile(gif, &giferr);
+ for (i = 0; i < *h; i++)
+ free(rows[i]);
+ free(rows);
--- imlib-1.9.15/Imlib/load.c.orig 2014-02-02 08:59:39.119743612 +0100
+++ imlib-1.9.15/Imlib/load.c 2014-02-02 09:16:12.426368593 +0100
@@ -429,6 +429,12 @@
unsigned char *
_LoadGIF(ImlibData * id, FILE *f, int *w, int *h, int *t)
{
+@@ -448,6 +448,7 @@
+ int intjump[] = {8, 8, 4, 2};
+ int istransp, transp;
+ int fd;
++ int giferr;
+
+ done = 0;
+ istransp = 0;
@@ -452,7 +458,7 @@
fd = fileno(f);
/* Apparently rewind(f) isn't sufficient */
lseek(fd, (long) 0, 0);
- gif = DGifOpenFileHandle(fd);
-+ gif = DGifOpenFileHandle(fd, NULL);
++ gif = DGifOpenFileHandle(fd, &giferr);
if (!gif)
return NULL;
rec = TERMINATE_RECORD_TYPE;
}
*w = gif->Image.Width;
+@@ -486,13 +486,13 @@
+ rows = malloc(*h * sizeof(GifRowType *));
+ if (!rows)
+ {
+- DGifCloseFile(gif);
++ DGifCloseFile(gif, &giferr);
+ return NULL;
+ }
+ data = _imlib_malloc_image(*w, *h);
+ if (!data)
+ {
+- DGifCloseFile(gif);
++ DGifCloseFile(gif, &giferr);
+ free(rows);
+ return NULL;
+ }
+@@ -503,7 +503,7 @@
+ rows[i] = malloc(*w * sizeof(GifPixelType));
+ if (!rows[i])
+ {
+- DGifCloseFile(gif);
++ DGifCloseFile(gif, &giferr);
+ for (i = 0; i < *h; i++)
+ if (rows[i])
+ free(rows[i]);
+@@ -592,7 +592,7 @@
+ }
+ }
+ }
+- DGifCloseFile(gif);
++ DGifCloseFile(gif, &giferr);
+ for (i = 0; i < *h; i++)
+ free(rows[i]);
+ free(rows);