]> git.eshelyaron.com Git - emacs.git/commitdiff
More elegant solution for accessing png_ptr without GCC warnings.
authorEli Zaretskii <eliz@gnu.org>
Fri, 31 Dec 2010 16:33:40 +0000 (18:33 +0200)
committerEli Zaretskii <eliz@gnu.org>
Fri, 31 Dec 2010 16:33:40 +0000 (18:33 +0200)
 image.c (png_jmpbuf): New macro.
 (my_png_error, png_load): Use it instead of #ifdef'ing according
 to PNG_LIBPNG_VER_MAJOR and PNG_LIBPNG_VER_MINOR.

src/ChangeLog
src/image.c

index 19cf253db7e3de038c09563a444b3355fcfabe07..acd579b94675ae3468bf38cf4950fa9cdecadc15 100644 (file)
@@ -5,6 +5,9 @@
        version of PNG library we were compiled with.
        (my_png_error, png_load): Avoid GCC warnings about direct access
        to png_ptr->jmpbuf.  (Bug#7716)
+       (png_jmpbuf): New macro.
+       (my_png_error, png_load): Use it instead of #ifdef'ing according
+       to PNG_LIBPNG_VER_MAJOR and PNG_LIBPNG_VER_MINOR.
 
 2010-12-27  Stefan Monnier  <monnier@iro.umontreal.ca>
 
index 8fce8489bf7fda98761a93de9ad3be792c7d18cf..6842f27eed7cc7cbba0ab72a5a4e2459a2107095 100644 (file)
@@ -5648,6 +5648,12 @@ init_png_functions (Lisp_Object libraries)
 
 #endif /* HAVE_NTGUI */
 
+/* libpng before 1.4.0 didn't have png_jmpbuf; v1.4.0 and later
+   deprecate direct access to png_ptr fields.  */
+#ifndef png_jmpbuf
+# define png_jmpbuf(PTR)  ((PTR)->jmpbuf)
+#endif
+
 /* Error and warning handlers installed when the PNG library
    is initialized.  */
 
@@ -5660,12 +5666,7 @@ my_png_error (png_ptr, msg)
   /* Avoid compiler warning about deprecated direct access to
      png_ptr's fields in libpng versions 1.4.x.  */
   image_error ("PNG error: %s", build_string (msg), Qnil);
-#if PNG_LIBPNG_VER_MAJOR > 1                                   \
-  || (PNG_LIBPNG_VER_MAJOR == 1 && PNG_LIBPNG_VER_MINOR >= 4)
   longjmp (png_jmpbuf (png_ptr), 1);
-#else
-  longjmp (png_ptr->jmpbuf, 1);
-#endif
 }
 
 
@@ -5839,16 +5840,9 @@ png_load (f, img)
       return 0;
     }
 
-  /* Avoid compiler warning about deprecated direct access to
-     png_ptr's fields in libpng versions 1.4.x.  */
-#if PNG_LIBPNG_VER_MAJOR > 1                                   \
-  || (PNG_LIBPNG_VER_MAJOR == 1 && PNG_LIBPNG_VER_MINOR >= 4)
   /* Set error jump-back.  We come back here when the PNG library
      detects an error.  */
   if (setjmp (png_jmpbuf (png_ptr)))
-#else
-  if (setjmp (png_ptr->jmpbuf))
-#endif
     {
     error:
       if (png_ptr)