diff options
author | Eli Zaretskii <eliz@gnu.org> | 2010-12-31 18:33:40 +0200 |
---|---|---|
committer | Eli Zaretskii <eliz@gnu.org> | 2010-12-31 18:33:40 +0200 |
commit | 18da2e74f0df222de51b24ac516deab2680814ec (patch) | |
tree | 509cfabae3aef381d7a9c058f8d63991e8f0df1c | |
parent | ca6e909ce36b365d705dd29e5c7f9a5a7904c719 (diff) | |
download | emacs-18da2e74f0df222de51b24ac516deab2680814ec.tar.gz |
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.
-rw-r--r-- | src/ChangeLog | 3 | ||||
-rw-r--r-- | src/image.c | 18 |
2 files changed, 9 insertions, 12 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index 19cf253db7e..acd579b9467 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -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> diff --git a/src/image.c b/src/image.c index 8fce8489bf7..6842f27eed7 100644 --- a/src/image.c +++ b/src/image.c @@ -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) |