wok diff imlib/stuff/giflib5.u @ rev 22709

updated exempi and exempi-dev (2.1.1 -> 2.5.1)
author Hans-G?nter Theisgen
date Wed Jan 22 08:42:50 2020 +0100 (2020-01-22)
parents
children
line diff
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/imlib/stuff/giflib5.u	Wed Jan 22 08:42:50 2020 +0100
     1.3 @@ -0,0 +1,122 @@
     1.4 +--- gdk_imlib/io-gif.c
     1.5 ++++ gdk_imlib/io-gif.c
     1.6 +@@ -10,6 +10,15 @@
     1.7 + #else
     1.8 + #include <gif_lib.h>
     1.9 + 
    1.10 ++static int ErrorCode;
    1.11 ++static void PrintGifError(void)
    1.12 ++{
    1.13 ++	char *Err = GifErrorString(ErrorCode);
    1.14 ++	if (Err != NULL)
    1.15 ++		fprintf(stderr, "GIF-LIB error: %s.\n", Err);
    1.16 ++	else	fprintf(stderr, "GIF-LIB undefined error %d.\n", ErrorCode);
    1.17 ++}
    1.18 ++
    1.19 + unsigned char      *
    1.20 + loader_gif(FILE *f, int *w, int *h, int *t)
    1.21 + {
    1.22 +@@ -30,7 +39,7 @@
    1.23 +   fd = fileno(f);
    1.24 +   /* Apparently rewind(f) isn't sufficient */
    1.25 +   lseek(fd, (long) 0, 0);
    1.26 +-  gif = DGifOpenFileHandle(fd);
    1.27 ++  gif = DGifOpenFileHandle(fd, &ErrorCode);
    1.28 + 
    1.29 +   transp = -1;
    1.30 +   data = NULL;
    1.31 +@@ -62,13 +71,13 @@
    1.32 + 	  rows = malloc(*h * sizeof(GifRowType *));
    1.33 + 	  if (!rows)
    1.34 + 	    {
    1.35 +-	      DGifCloseFile(gif);
    1.36 ++	      DGifCloseFile(gif, NULL);
    1.37 + 	      return NULL;
    1.38 + 	    }
    1.39 + 	  data = _gdk_malloc_image(*w, *h);
    1.40 + 	  if (!data)
    1.41 + 	    {
    1.42 +-	      DGifCloseFile(gif);
    1.43 ++	      DGifCloseFile(gif, NULL);
    1.44 + 	      free(rows);
    1.45 + 	      return NULL;
    1.46 + 	    }
    1.47 +@@ -79,7 +88,7 @@
    1.48 + 	      rows[i] = malloc(*w * sizeof(GifPixelType));
    1.49 + 	      if (!rows[i])
    1.50 + 		{
    1.51 +-		  DGifCloseFile(gif);
    1.52 ++		  DGifCloseFile(gif, NULL);
    1.53 + 		  for (i = 0; i < *h; i++)
    1.54 + 		    if (rows[i])
    1.55 + 		      free(rows[i]);
    1.56 +@@ -168,7 +177,7 @@
    1.57 + 	    }
    1.58 + 	}
    1.59 +     }
    1.60 +-  DGifCloseFile(gif);
    1.61 ++  DGifCloseFile(gif, NULL);
    1.62 +   for (i = 0; i < *h; i++)
    1.63 +     free(rows[i]);
    1.64 +   free(rows);
    1.65 +--- Imlib/load.c
    1.66 ++++ Imlib/load.c
    1.67 +@@ -420,6 +420,15 @@
    1.68 + #endif /* HAVE_LIBTIFF */
    1.69 + 
    1.70 + #ifdef HAVE_LIBGIF
    1.71 ++static int ErrorCode;
    1.72 ++static void PrintGifError(void)
    1.73 ++{
    1.74 ++	char *Err = GifErrorString(ErrorCode);
    1.75 ++	if (Err != NULL)
    1.76 ++		fprintf(stderr, "GIF-LIB error: %s.\n", Err);
    1.77 ++	else	fprintf(stderr, "GIF-LIB undefined error %d.\n", ErrorCode);
    1.78 ++}
    1.79 ++
    1.80 + unsigned char      *
    1.81 + _LoadGIF(ImlibData * id, FILE *f, int *w, int *h, int *t)
    1.82 + {
    1.83 +@@ -443,7 +452,7 @@
    1.84 +   fd = fileno(f);
    1.85 +   /* Apparently rewind(f) isn't sufficient */
    1.86 +   lseek(fd, (long) 0, 0);
    1.87 +-  gif = DGifOpenFileHandle(fd);
    1.88 ++  gif = DGifOpenFileHandle(fd, &ErrorCode);
    1.89 + 
    1.90 +   if (!gif)
    1.91 +     return NULL;
    1.92 +@@ -470,13 +479,13 @@
    1.93 + 	  rows = malloc(*h * sizeof(GifRowType *));
    1.94 + 	  if (!rows)
    1.95 + 	    {
    1.96 +-	      DGifCloseFile(gif);
    1.97 ++	      DGifCloseFile(gif, NULL);
    1.98 + 	      return NULL;
    1.99 + 	    }
   1.100 + 	  data = _imlib_malloc_image(*w, *h);
   1.101 + 	  if (!data)
   1.102 + 	    {
   1.103 +-	      DGifCloseFile(gif);
   1.104 ++	      DGifCloseFile(gif, NULL);
   1.105 + 	      free(rows);
   1.106 + 	      return NULL;
   1.107 + 	    }
   1.108 +@@ -487,7 +496,7 @@
   1.109 + 	      rows[i] = malloc(*w * sizeof(GifPixelType));
   1.110 + 	      if (!rows[i])
   1.111 + 		{
   1.112 +-		  DGifCloseFile(gif);
   1.113 ++		  DGifCloseFile(gif, NULL);
   1.114 + 		  for (i = 0; i < *h; i++)
   1.115 + 		    if (rows[i])
   1.116 + 		      free(rows[i]);
   1.117 +@@ -576,7 +585,7 @@
   1.118 + 	    }
   1.119 + 	}
   1.120 +     }
   1.121 +-  DGifCloseFile(gif);
   1.122 ++  DGifCloseFile(gif, NULL);
   1.123 +   for (i = 0; i < *h; i++)
   1.124 +     free(rows[i]);
   1.125 +   free(rows);