diff --git a/ANNOUNCE b/ANNOUNCE index eb38d20c297eb54f92f9e11a3014fd101832c346..ab2651a440d0ea675774952f75861b0393adc0e3 100644 --- a/ANNOUNCE +++ b/ANNOUNCE @@ -71,6 +71,7 @@ Version 1.6.3beta05 [May 8, 2013] invalid values. Attempt to detect configuration issues with pngdeflate, which requires both the correct libpng and the correct zlib to function correctly. + Check ZLIB_VERNUM for mismatches, enclose #error in quotes Send comments/corrections/commendations to png-mng-implement at lists.sf.net (subscription required; visit diff --git a/CHANGES b/CHANGES index d022e237d8a40d7770e6f7e20715a5bd051f5506..96f9d0305056deb06b5521205e3579775e2e1010 100644 --- a/CHANGES +++ b/CHANGES @@ -4554,6 +4554,7 @@ Version 1.6.3beta05 [May 8, 2013] invalid values. Attempt to detect configuration issues with pngdeflate, which requires both the correct libpng and the correct zlib to function correctly. + Check ZLIB_VERNUM for mismatches, enclose #error in quotes Send comments/corrections/commendations to png-mng-implement at lists.sf.net (subscription required; visit diff --git a/contrib/tools/pngdeflate.c b/contrib/tools/pngdeflate.c index ff9fdb430fa0221852b0701d7a150807e5bbf422..c30a7ee9f76c3e188be2b25c9408397af8456189 100644 --- a/contrib/tools/pngdeflate.c +++ b/contrib/tools/pngdeflate.c @@ -26,14 +26,14 @@ #endif #if PNG_LIBPNG_VER < 10603 /* 1.6.3 */ -# error pngdeflate will not work with libpng versions prior to 1.6.3 +# error "pngdeflate will not work with libpng versions prior to 1.6.3" #endif #ifdef PNG_READ_SUPPORTED #include #ifndef PNG_MAXIMUM_INFLATE_WINDOW -# error pngdeflate not supported in this libpng version +# error "pngdeflate not supported in this libpng version" #endif #if PNG_ZLIB_VERNUM >= 0x1240 diff --git a/pngpriv.h b/pngpriv.h index d06284d1e6fc54680eaa2236ff1170fed00af32b..fcfea42fb5539285586782e143439820921491a1 100644 --- a/pngpriv.h +++ b/pngpriv.h @@ -694,6 +694,24 @@ #include "pngstruct.h" #include "pnginfo.h" +/* Validate the include paths - the include path used to generate pnglibconf.h + * must match that used in the build, or we must be using pnglibconf.h.prebuilt: + */ +#if PNG_ZLIB_VERNUM != 0 && PNG_ZLIB_VERNUM != ZLIB_VERNUM +# error ZLIB_VERNUM != PNG_ZLIB_VERNUM \ + "-I (include path) error: see the notes in pngpriv.h" + /* This means that when pnglibconf.h was built the copy of zlib.h that it + * used is not the same as the one being used here. Because the build of + * libpng makes decisions to use inflateInit2 and inflateReset2 based on the + * zlib version number and because this affects handling of certain broken + * PNG files the -I directives must match. + * + * The most likely explanation is that you passed a -I in CFLAGS, this will + * not work; all the preprocessor directories and in particular all the -I + * directives must be in CPPFLAGS. + */ +#endif + /* This is used for 16 bit gamma tables -- only the top level pointers are * const; this could be changed: */