Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
View | Details | Raw Unified | Return to bug 499268 | Differences between
and this patch

Collapse All | Expand All

(-)imlib-1.9.15.orig/config.h.in (+3 lines)
Lines 29-34 Link Here
29
#undef HAVE_LIBGIF
29
#undef HAVE_LIBGIF
30
30
31
/* */
31
/* */
32
#undef HAVE_GIF_ERROR_STRING
33
34
/* */
32
#undef HAVE_LIBJPEG
35
#undef HAVE_LIBJPEG
33
36
34
/* */
37
/* */
(-)imlib-1.9.15.orig/configure.in (-1 / +6 lines)
Lines 252-261 AC_CHECK_LIB(tiff, TIFFReadScanline, Link Here
252
AC_CHECK_HEADER(gif_lib.h,
252
AC_CHECK_HEADER(gif_lib.h,
253
  [AC_CHECK_LIB(ungif, DGifOpenFileName,
253
  [AC_CHECK_LIB(ungif, DGifOpenFileName,
254
    [GIFLIBS="-lungif"
254
    [GIFLIBS="-lungif"
255
     SUPPORT_LIBS="$SUPPORT_LIBS -lungif"; AC_DEFINE(HAVE_LIBGIF, 1, [ ])],
255
     SUPPORT_LIBS="$SUPPORT_LIBS -lungif"
256
     AC_CHECK_LIB(ungif, GifErrorString,
257
      [AC_DEFINE(HAVE_GIF_ERROR_STRING, 1, [ ])])
258
     AC_DEFINE(HAVE_LIBGIF, 1, [ ])],
256
    [AC_CHECK_LIB(gif, DGifOpenFileName,
259
    [AC_CHECK_LIB(gif, DGifOpenFileName,
257
      [GIFLIBS="-lgif"
260
      [GIFLIBS="-lgif"
258
      SUPPORT_LIBS="$SUPPORT_LIBS -lgif"
261
      SUPPORT_LIBS="$SUPPORT_LIBS -lgif"
262
       AC_CHECK_LIB(gif, GifErrorString,
263
        [AC_DEFINE(HAVE_GIF_ERROR_STRING, 1, [ ])])
259
       AC_DEFINE(HAVE_LIBGIF, 1, [ ])],
264
       AC_DEFINE(HAVE_LIBGIF, 1, [ ])],
260
      [AC_MSG_ERROR(*** GIF library file not found ***)], 
265
      [AC_MSG_ERROR(*** GIF library file not found ***)], 
261
      $GX_LIBS)],
266
      $GX_LIBS)],
(-)imlib-1.9.15.orig/gdk_imlib/io-gif.c (-2 / +29 lines)
Lines 10-15 unsigned char loader_gif (FILE *f, int * Link Here
10
#else
10
#else
11
#include <gif_lib.h>
11
#include <gif_lib.h>
12
12
13
// NB: relevant giflib error interfaces come in three flavors.
14
// We might call them:
15
//
16
// ancient (upstream code is fine)
17
// old -- giflib-4.2..giflib-5
18
// new -- giflib 5+
19
//
20
// This ugly macro should smooth the ugly details out for all
21
// three flavors.
22
#ifdef HAVE_LIBGIF
23
  #ifdef HAVE_GIF_ERROR_STRING
24
    #if (GIFLIB_MAJOR >= 5)
25
      #define GifError() (gif ? gif->Error : 0)
26
      #define GifErrorString() GifErrorString(GifError())
27
    #endif
28
    #define myPrintGifError() \
29
      do { \
30
        const char* errorString = GifErrorString(); \
31
        if (errorString != NULL) \
32
          fprintf(stderr, "giflib: error: %s\n", errorString); \
33
        else \
34
          fprintf(stderr, "giflib: error (undefined): %d\n", GifError()); \
35
      } while (0)
36
  #else
37
    #define myPrintGifError() PrintGifError()
38
  #endif
39
13
unsigned char      *
40
unsigned char      *
14
loader_gif(FILE *f, int *w, int *h, int *t)
41
loader_gif(FILE *f, int *w, int *h, int *t)
15
{
42
{
Lines 43-56 loader_gif(FILE *f, int *w, int *h, int Link Here
43
    {
70
    {
44
      if (DGifGetRecordType(gif, &rec) == GIF_ERROR)
71
      if (DGifGetRecordType(gif, &rec) == GIF_ERROR)
45
	{
72
	{
46
	  PrintGifError();
73
	  myPrintGifError();
47
	  rec = TERMINATE_RECORD_TYPE;
74
	  rec = TERMINATE_RECORD_TYPE;
48
	}
75
	}
49
      if ((rec == IMAGE_DESC_RECORD_TYPE) && (!done))
76
      if ((rec == IMAGE_DESC_RECORD_TYPE) && (!done))
50
	{
77
	{
51
	  if (DGifGetImageDesc(gif) == GIF_ERROR)
78
	  if (DGifGetImageDesc(gif) == GIF_ERROR)
52
	    {
79
	    {
53
	      PrintGifError();
80
	      myPrintGifError();
54
	      rec = TERMINATE_RECORD_TYPE;
81
	      rec = TERMINATE_RECORD_TYPE;
55
	    }
82
	    }
56
	  *w = gif->Image.Width;
83
	  *w = gif->Image.Width;
(-)imlib-1.9.15.orig/Imlib/load.c (-2 / +32 lines)
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;

Return to bug 499268