Lines 419-425
_LoadTIFF(ImlibData * id, FILE *f, char
Link Here
|
419 |
|
419 |
|
420 |
#endif /* HAVE_LIBTIFF */ |
420 |
#endif /* HAVE_LIBTIFF */ |
421 |
|
421 |
|
|
|
422 |
// NB: relevant giflib error interfaces come in three flavors. |
423 |
// We might call them: |
424 |
// |
425 |
// ancient (upstream code is fine) |
426 |
// old -- giflib-4.2..giflib-5 |
427 |
// new -- giflib 5+ |
428 |
// |
429 |
// This ugly macro should smooth the ugly details out for all |
430 |
// three flavors. |
422 |
#ifdef HAVE_LIBGIF |
431 |
#ifdef HAVE_LIBGIF |
|
|
432 |
#ifdef HAVE_GIF_ERROR_STRING |
433 |
#if (GIFLIB_MAJOR >= 5) |
434 |
// new flavor: GifError{,String} are gone |
435 |
#define GifError() (gif ? gif->Error : 0) |
436 |
#define GifErrorString() GifErrorString(GifError()) |
437 |
#endif |
438 |
// myPrintGifError here services the old and new |
439 |
#define myPrintGifError() \ |
440 |
do { \ |
441 |
const char* errorString = GifErrorString(); \ |
442 |
if (errorString != NULL) \ |
443 |
fprintf(stderr, "giflib: error: %s\n", errorString); \ |
444 |
else \ |
445 |
fprintf(stderr, "giflib: error (undefined): %d\n", GifError()); \ |
446 |
} while (0) |
447 |
#else |
448 |
// in the ancient giflib interface PrintGifError does everything required, so |
449 |
// so just make myPrintGifError a macro-alias for that. |
450 |
#define myPrintGifError() PrintGifError() |
451 |
#endif |
452 |
|
423 |
unsigned char * |
453 |
unsigned char * |
424 |
_LoadGIF(ImlibData * id, FILE *f, int *w, int *h, int *t) |
454 |
_LoadGIF(ImlibData * id, FILE *f, int *w, int *h, int *t) |
425 |
{ |
455 |
{ |
Lines 451-464
_LoadGIF(ImlibData * id, FILE *f, int *w
Link Here
|
451 |
{ |
481 |
{ |
452 |
if (DGifGetRecordType(gif, &rec) == GIF_ERROR) |
482 |
if (DGifGetRecordType(gif, &rec) == GIF_ERROR) |
453 |
{ |
483 |
{ |
454 |
PrintGifError(); |
484 |
myPrintGifError(); |
455 |
rec = TERMINATE_RECORD_TYPE; |
485 |
rec = TERMINATE_RECORD_TYPE; |
456 |
} |
486 |
} |
457 |
if ((rec == IMAGE_DESC_RECORD_TYPE) && (!done)) |
487 |
if ((rec == IMAGE_DESC_RECORD_TYPE) && (!done)) |
458 |
{ |
488 |
{ |
459 |
if (DGifGetImageDesc(gif) == GIF_ERROR) |
489 |
if (DGifGetImageDesc(gif) == GIF_ERROR) |
460 |
{ |
490 |
{ |
461 |
PrintGifError(); |
491 |
myPrintGifError(); |
462 |
rec = TERMINATE_RECORD_TYPE; |
492 |
rec = TERMINATE_RECORD_TYPE; |
463 |
} |
493 |
} |
464 |
*w = gif->Image.Width; |
494 |
*w = gif->Image.Width; |