]> git.eshelyaron.com Git - emacs.git/commitdiff
Handle giflib 5 changes (tiny change)
authorBarry Fishman <barry_fishman@acm.org>
Thu, 10 Oct 2013 00:37:44 +0000 (20:37 -0400)
committerGlenn Morris <rgm@gnu.org>
Thu, 10 Oct 2013 00:37:44 +0000 (20:37 -0400)
* configure.ac: Update for giflib 5.

* src/image.c (GIFLIB_MAJOR): Ensure it's defined.
(DGifOpen, DGifOpenFileName): Handle giflib 5 syntax.  (Bug#15531)

ChangeLog
configure.ac
src/ChangeLog
src/image.c

index b7f8c1e8ec0167cc73f815a6bd794d57dca6d7d6..6b783060bf96510b38f310133aa0eff49b7f50d7 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2013-10-10  Barry Fishman  <barry_fishman@acm.org>  (tiny change)
+
+       * configure.ac: Update for giflib 5.  (Bug#15531)
+
 2013-10-08  Eli Zaretskii  <eliz@gnu.org>
 
        * configure.ac (HAVE_MENUS): Define unconditionally.
index 73185acac39ede6ac17fc9f75e0ba689783760f5..3bb1ee1e954e261a700fa2b13b2aca48d8e64b0d 100644 (file)
@@ -3106,8 +3106,9 @@ elif test "${HAVE_X11}" = "yes" && test "${with_gif}" != "no" \
         || test "${HAVE_W32}" = "yes"; then
   AC_CHECK_HEADER(gif_lib.h,
 # EGifPutExtensionLast only exists from version libungif-4.1.0b1.
-# Earlier versions can crash Emacs.
-    [AC_CHECK_LIB(gif, EGifPutExtensionLast, HAVE_GIF=yes, HAVE_GIF=maybe)])
+# Earlier versions can crash Emacs, but version 5.0 removes EGifPutExtensionLast.
+    [AC_CHECK_LIB(gif, GifMakeMapObject, HAVE_GIF=yes,
+        [AC_CHECK_LIB(gif, EGifPutExtensionLast, HAVE_GIF=yes, HAVE_GIF=maybe)])])
 
   if test "$HAVE_GIF" = yes; then
     LIBGIF=-lgif
index f46733d1ebe68aaa41ef14d403d6fb7cd950ab35..7e19666879622c6eec08eb07bce4d3e8b861121e 100644 (file)
@@ -1,3 +1,8 @@
+2013-10-10  Barry Fishman  <barry_fishman@acm.org>  (tiny change)
+
+       * image.c (GIFLIB_MAJOR): Ensure it's defined.
+       (DGifOpen, DGifOpenFileName): Handle giflib 5 syntax.  (Bug#15531)
+
 2013-10-09  Paul Eggert  <eggert@cs.ucla.edu>
 
        * fns.c (sxhash_bool_vector): Fix buffer read overrun.
index e429830cc960315697bc48b3152d5df506afcfc7..c414f5b91bdd57a8b41d375132873b3391bc944a 100644 (file)
@@ -7219,14 +7219,22 @@ gif_image_p (Lisp_Object object)
 
 #endif /* HAVE_NTGUI */
 
+#ifndef GIFLIB_MAJOR
+#define GIFLIB_MAJOR 0
+#endif
 
 #ifdef WINDOWSNT
 
 /* GIF library details.  */
 DEF_IMGLIB_FN (int, DGifCloseFile, (GifFileType *));
 DEF_IMGLIB_FN (int, DGifSlurp, (GifFileType *));
+#if GIFLIB_MAJOR < 5
 DEF_IMGLIB_FN (GifFileType *, DGifOpen, (void *, InputFunc));
 DEF_IMGLIB_FN (GifFileType *, DGifOpenFileName, (const char *));
+#else
+DEF_IMGLIB_FN (GifFileType *, DGifOpen, (void *, InputFunc, int *));
+DEF_IMGLIB_FN (GifFileType *, DGifOpenFileName, (const char *, int *));
+#endif
 
 static bool
 init_gif_functions (void)
@@ -7316,7 +7324,11 @@ gif_load (struct frame *f, struct image *img)
        }
 
       /* Open the GIF file.  */
+#if GIFLIB_MAJOR < 5
       gif = fn_DGifOpenFileName (SSDATA (file));
+#else
+      gif = fn_DGifOpenFileName (SSDATA (file), NULL);
+#endif
       if (gif == NULL)
        {
          image_error ("Cannot open `%s'", file, Qnil);
@@ -7337,7 +7349,11 @@ gif_load (struct frame *f, struct image *img)
       memsrc.len = SBYTES (specified_data);
       memsrc.index = 0;
 
+#if GIFLIB_MAJOR < 5
       gif = fn_DGifOpen (&memsrc, gif_read_from_memory);
+#else
+      gif = fn_DGifOpen (&memsrc, gif_read_from_memory, NULL);
+#endif
       if (!gif)
        {
          image_error ("Cannot open memory source `%s'", img->spec, Qnil);