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.
This commit is contained in:
parent
ca6e909ce3
commit
18da2e74f0
2 changed files with 9 additions and 12 deletions
|
@ -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>
|
||||
|
||||
|
|
18
src/image.c
18
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)
|
||||
|
|
Loading…
Add table
Reference in a new issue