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

Collapse All | Expand All

(-)imlib-1.9.15.old/gifutil.h (-2 / +2 lines)
Lines 2-8 Link Here
2
#define __GIFUTIL_H__
2
#define __GIFUTIL_H__
3
3
4
static void
4
static void
5
_PrintGifError(GifFileType *gif)
5
_PrintGifError(int errorCode)
6
{
6
{
7
  /* GIFLIB_MAJOR is only defined in libgif >= 4.2.0 */
7
  /* GIFLIB_MAJOR is only defined in libgif >= 4.2.0 */
8
  /* libgif 4.2.0 has retired PrintGifError() and added GifErrorString() */
8
  /* libgif 4.2.0 has retired PrintGifError() and added GifErrorString() */
Lines 11-17 Link Here
11
  /* Static string actually, hence the const char* cast */
11
  /* Static string actually, hence the const char* cast */
12
  
12
  
13
#if GIFLIB_MAJOR >= 5
13
#if GIFLIB_MAJOR >= 5
14
  const char* gifliberr = (const char*) GifErrorString(gif->Error);
14
  const char* gifliberr = (const char*) GifErrorString(errorCode);
15
#else
15
#else
16
  const char* gifliberr = (const char*) GifErrorString();
16
  const char* gifliberr = (const char*) GifErrorString();
17
#endif
17
#endif
(-)imlib-1.9.15.old/Imlib/load.c (-10 / +20 lines)
Lines 434-439 Link Here
434
#ifdef HAVE_LIBGIF
434
#ifdef HAVE_LIBGIF
435
/*------------------------*/
435
/*------------------------*/
436
/*------------------------*/
436
/*------------------------*/
437
void
438
_CloseGIF(GifFileType *gif)
439
{
440
#if GIFLIB_MAJOR > 5 || (GIFLIB_MAJOR == 5 && GIFLIB_MINOR >= 1)
441
    int errCode = 0;
442
443
    if (DGifCloseFile(gif, &errCode) != GIF_OK)
444
      _PrintGifError(errCode);
445
#else
446
    DGifCloseFile(gif);
447
#endif
448
}
449
437
unsigned char      *
450
unsigned char      *
438
_LoadGIF(ImlibData * id, FILE *f, int *w, int *h, int *t)
451
_LoadGIF(ImlibData * id, FILE *f, int *w, int *h, int *t)
439
{
452
{
Lines 464-473 Link Here
464
  gif = DGifOpenFileHandle(fd, &errCode);
477
  gif = DGifOpenFileHandle(fd, &errCode);
465
  if (!gif)
478
  if (!gif)
466
  {
479
  {
467
    const char* gifliberr = (const char*) GifErrorString(errCode);
480
    _PrintGifError(errCode);
468
    if (gifliberr == NULL)
469
      gifliberr = "Unknown error";
470
    fprintf(stderr, "%s\n", gifliberr);
471
    return NULL;
481
    return NULL;
472
  }
482
  }
473
#else
483
#else
Lines 481-494 Link Here
481
    {
491
    {
482
      if (DGifGetRecordType(gif, &rec) == GIF_ERROR)
492
      if (DGifGetRecordType(gif, &rec) == GIF_ERROR)
483
	{
493
	{
484
	  _PrintGifError(gif);
494
	  _PrintGifError(gif->Error);
485
	  rec = TERMINATE_RECORD_TYPE;
495
	  rec = TERMINATE_RECORD_TYPE;
486
	}
496
	}
487
      if ((rec == IMAGE_DESC_RECORD_TYPE) && (!done))
497
      if ((rec == IMAGE_DESC_RECORD_TYPE) && (!done))
488
	{
498
	{
489
	  if (DGifGetImageDesc(gif) == GIF_ERROR)
499
	  if (DGifGetImageDesc(gif) == GIF_ERROR)
490
	    {
500
	    {
491
	      _PrintGifError(gif);
501
	      _PrintGifError(gif->Error);
492
	      rec = TERMINATE_RECORD_TYPE;
502
	      rec = TERMINATE_RECORD_TYPE;
493
	    }
503
	    }
494
	  *w = gif->Image.Width;
504
	  *w = gif->Image.Width;
Lines 500-512 Link Here
500
	  rows = malloc(*h * sizeof(GifRowType *));
510
	  rows = malloc(*h * sizeof(GifRowType *));
501
	  if (!rows)
511
	  if (!rows)
502
	    {
512
	    {
503
	      DGifCloseFile(gif);
513
	      _CloseGIF(gif);
504
	      return NULL;
514
	      return NULL;
505
	    }
515
	    }
506
	  data = _imlib_malloc_image(*w, *h);
516
	  data = _imlib_malloc_image(*w, *h);
507
	  if (!data)
517
	  if (!data)
508
	    {
518
	    {
509
	      DGifCloseFile(gif);
519
	      _CloseGIF(gif);
510
	      free(rows);
520
	      free(rows);
511
	      return NULL;
521
	      return NULL;
512
	    }
522
	    }
Lines 517-523 Link Here
517
	      rows[i] = malloc(*w * sizeof(GifPixelType));
527
	      rows[i] = malloc(*w * sizeof(GifPixelType));
518
	      if (!rows[i])
528
	      if (!rows[i])
519
		{
529
		{
520
		  DGifCloseFile(gif);
530
		  _CloseGIF(gif);
521
		  for (i = 0; i < *h; i++)
531
		  for (i = 0; i < *h; i++)
522
		    if (rows[i])
532
		    if (rows[i])
523
		      free(rows[i]);
533
		      free(rows[i]);
Lines 606-612 Link Here
606
	    }
616
	    }
607
	}
617
	}
608
    }
618
    }
609
  DGifCloseFile(gif);
619
  _CloseGIF(gif);
610
  for (i = 0; i < *h; i++)
620
  for (i = 0; i < *h; i++)
611
    free(rows[i]);
621
    free(rows[i]);
612
  free(rows);
622
  free(rows);

Return to bug 538976