diff -Naur fbida-2.09-orig/rd/read-gif.c fbida-2.09/rd/read-gif.c --- fbida-2.09-orig/rd/read-gif.c 2013-07-29 16:43:26.949362012 -0400 +++ fbida-2.09/rd/read-gif.c 2013-07-29 16:43:43.669166969 -0400 @@ -13,6 +13,14 @@ int w,h; }; +static void +localPrintGifError(void) +{ + int ErrorCode=0; + GifErrorString(ErrorCode); + fprintf(stderr, "\nGIF-LIB error: %i.\n", ErrorCode); +} + static GifRecordType gif_fileread(struct gif_state *h) { @@ -25,7 +33,7 @@ if (GIF_ERROR == DGifGetRecordType(h->gif,&RecordType)) { if (debug) fprintf(stderr,"gif: DGifGetRecordType failed\n"); - PrintGifError(); + localPrintGifError(); return -1; } switch (RecordType) { @@ -42,7 +50,7 @@ if (rc == GIF_ERROR) { if (debug) fprintf(stderr,"gif: DGifGetExtension failed\n"); - PrintGifError(); + localPrintGifError(); return -1; } if (debug) { @@ -93,12 +101,13 @@ struct gif_state *h; GifRecordType RecordType; int i, image = 0; - + int Error; + h = malloc(sizeof(*h)); memset(h,0,sizeof(*h)); h->infile = fp; - h->gif = DGifOpenFileHandle(fileno(fp)); + h->gif = DGifOpenFileHandle(fileno(fp), &Error); h->row = malloc(h->gif->SWidth * sizeof(GifPixelType)); while (0 == image) { @@ -108,7 +117,7 @@ if (GIF_ERROR == DGifGetImageDesc(h->gif)) { if (debug) fprintf(stderr,"gif: DGifGetImageDesc failed\n"); - PrintGifError(); + localPrintGifError(); } if (NULL == h->gif->SColorMap && NULL == h->gif->Image.ColorMap) { @@ -165,7 +165,7 @@ oops: if (debug) fprintf(stderr,"gif: fatal error, aborting\n"); - DGifCloseFile(h->gif); + DGifCloseFile(h->gif, &Error); fclose(h->infile); free(h->row); free(h); @@ -202,10 +202,11 @@ gif_done(void *data) { struct gif_state *h = data; + int Error; if (debug) fprintf(stderr,"gif: done, cleaning up\n"); - DGifCloseFile(h->gif); + DGifCloseFile(h->gif, &Error); fclose(h->infile); if (h->il) free(h->il);