--- Imlib/load.c.ORIG 2016-01-12 10:45:00.763546544 +0100 +++ Imlib/load.c 2016-01-12 16:10:29.250427957 +0100 @@ -431,6 +431,17 @@ #endif /* HAVE_LIBTIFF */ #ifdef HAVE_LIBGIF + +static void +PrintGifError(void) +{ + char *Err = GifErrorString(0); + + if (Err != NULL) + fprintf(stderr, "\nGIF-LIB error: %s.\n", Err); + else + fprintf(stderr, "\nGIF-LIB undefined error %d.\n", GifError()); +} unsigned char * _LoadGIF(ImlibData * id, FILE *f, int *w, int *h, int *t) { @@ -444,6 +455,7 @@ int intjump[] = {8, 8, 4, 2}; int istransp, transp; int fd; + int Error; done = 0; istransp = 0; @@ -454,7 +466,7 @@ fd = fileno(f); /* Apparently rewind(f) isn't sufficient */ lseek(fd, (long) 0, 0); - gif = DGifOpenFileHandle(fd); + gif = DGifOpenFileHandle(fd,&Error); if (!gif) return NULL; @@ -481,13 +493,13 @@ rows = malloc(*h * sizeof(GifRowType *)); if (!rows) { - DGifCloseFile(gif); + DGifCloseFile(gif,&Error); return NULL; } data = _imlib_malloc_image(*w, *h); if (!data) { - DGifCloseFile(gif); + DGifCloseFile(gif,&Error); free(rows); return NULL; } @@ -498,7 +510,7 @@ rows[i] = malloc(*w * sizeof(GifPixelType)); if (!rows[i]) { - DGifCloseFile(gif); + DGifCloseFile(gif,&Error); for (i = 0; i < *h; i++) if (rows[i]) free(rows[i]); @@ -587,7 +599,7 @@ } } } - DGifCloseFile(gif); + DGifCloseFile(gif,&Error); for (i = 0; i < *h; i++) free(rows[i]); free(rows);