Commit 18da2e74 authored by Eli Zaretskii's avatar Eli Zaretskii

More elegant solution for accessing png_ptr without GCC warnings.

 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.
parent ca6e909c
......@@ -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>
......
......@@ -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)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment