[libpng16]Check ZLIB_VERNUM for mismatches, enclose #error in quotes
diff --git a/ANNOUNCE b/ANNOUNCE
index eb38d20..ab2651a 100644
--- a/ANNOUNCE
+++ b/ANNOUNCE
@@ -71,6 +71,7 @@
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 d022e23..96f9d03 100644
--- a/CHANGES
+++ b/CHANGES
@@ -4554,6 +4554,7 @@
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 ff9fdb4..c30a7ee 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 <zlib.h>
#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 d06284d..fcfea42 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:
*/