2 Libpng 1.6.3 - July 18, 2013
4 This is a public release of libpng, intended for use in production codes.
6 Files available for download:
8 Source files with LF line endings (for Unix/Linux) and with a
11 libpng-1.6.3.tar.xz (LZMA-compressed, recommended)
14 Source files with CRLF line endings (for Windows), without the
17 lpng163.7z (LZMA-compressed, recommended)
22 libpng-1.6.3-README.txt
23 libpng-1.6.3-LICENSE.txt
25 Changes since the last public release (1.6.2):
27 Revised stack marking in arm/filter_neon.S and configure.ac.
28 Ensure that NEON filter stuff is completely disabled when switched 'off'.
29 Previously the ARM NEON specific files were still built if the option
30 was switched 'off' as opposed to being explicitly disabled.
31 Test for 'arm*' not just 'arm' in the host_cpu configure variable.
32 Rebuilt the configure scripts.
33 Expanded manual paragraph about writing private chunks, particularly
34 the need to call png_set_keep_unknown_chunks() when writing them.
35 Avoid dereferencing NULL pointer possibly returned from
36 png_create_write_struct() (Andrew Church).
37 Calculate our own zlib windowBits when decoding rather than trusting the
38 CMF bytes in the PNG datastream.
39 Added an option to force maximum window size for inflating, which was
40 the behavior of libpng15 and earlier.
41 Added png-fix-itxt and png-fix-too-far-back to the built programs and
42 removed warnings from the source code and timepng that are revealed as
44 Detect wrong libpng versions linked to png-fix-too-far-back, which currently
45 only works with libpng versions that can be made to reliably fail when
46 the deflate data contains an out-of-window reference. This means only
48 Fixed gnu issues: g++ needs a static_cast, gcc 4.4.7 has a broken warning
49 message which it is easier to work round than ignore.
50 Updated contrib/pngminus/pnm2png.c (Paul Stewart):
52 Ignore "#" delimited comments in input file to pnm2png.c.
53 Fixed whitespace handling
54 Added a call to png_set_packing()
55 Initialize dimension values so if sscanf fails at least we have known
57 Attempt to detect configuration issues with png-fix-too-far-back, which
58 requires both the correct libpng and the correct zlib to function
60 Check ZLIB_VERNUM for mismatches, enclose #error in quotes
61 Added information in the documentation about problems with and fixes for
62 the bad CRC and bad iTXt chunk situations.
63 Allow contrib/pngminus/pnm2png.c to compile without WRITE_INVERT and
64 WRITE_PACK supported (writes error message that it can't read P1 or
65 Improved png-fix-too-far-back usage message, added --suffix option.
66 Revised contrib/pngminim/*/makefile to generate pnglibconf.h with the
67 right zlib header files.
68 Separated CPPFLAGS and CFLAGS in contrib/pngminim/*/makefile
69 Removed a redundant test in png_set_IHDR().
70 Added set(CMAKE_CONFIGURATION_TYPES ...) to CMakeLists.txt (Andrew Hundt)
71 Deleted set(CMAKE_BUILD_TYPE) block from CMakeLists.txt
72 Enclose the prototypes for the simplified write API in
73 #ifdef PNG_STDIO_SUPPORTED/#endif
74 Make ARM NEON support work at compile time (not just configure time).
75 This moves the test on __ARM_NEON__ into pngconf.h to avoid issues when
76 using a compiler that compiles for multiple architectures at one time.
77 Removed PNG_FILTER_OPTIMIZATIONS and PNG_ARM_NEON_SUPPORTED from
78 pnglibconf.h, allowing more of the decisions to be made internally
79 (pngpriv.h) during the compile. Without this, symbol prefixing is broken
80 under certain circumstances on ARM platforms. Now only the API parts of
81 the optimizations ('check' vs 'api') are exposed in the public header files
82 except that the new setting PNG_ARM_NEON_OPT documents how libpng makes the
83 decision about whether or not to use the optimizations.
84 Protect symbol prefixing against CC/CPPFLAGS/CFLAGS useage.
85 Previous iOS/Xcode fixes for the ARM NEON optimizations moved the test
86 on __ARM_NEON__ from configure time to compile time. This breaks symbol
87 prefixing because the definition of the special png_init_filter_functions
88 call was hidden at configure time if the relevant compiler arguments are
89 passed in CFLAGS as opposed to CC. This change attempts to avoid all
90 the confusion that would result by declaring the init function even when
91 it is not used, so that it will always get prefixed.
92 Revised libpng.3 so that "doclifter" can process it.
93 Revised example.c to illustrate use of PNG_DEFAULT_sRGB and PNG_GAMMA_MAC_18
94 as parameters for png_set_gamma(). These have been available since
96 Renamed contrib/tools/png-fix-too-far-back.c to pngfix.c and revised it
97 to check all compressed chunks known to libpng.
98 Updated documentation to show default behavior of benign errors correctly.
99 Only compile ARM code when PNG_READ_SUPPORTED is defined.
100 Fixed undefined behavior in contrib/tools/pngfix.c and added new strip
101 option. pngfix relied on undefined behavior and even a simple change from
102 gcc to g++ caused it to fail. The new strip option 'unsafe' has been
103 implemented and is the default if --max is given. Option names have
104 been clarified, with --strip=transform now stripping the bKGD chunk,
105 which was stripped previously with --strip=unused.
106 Added all documented chunk types to pngpriv.h
107 Unified pngfix.c source with libpng17.
108 Revised manual about changes in iTXt chunk handling made in libpng-1.6.0.
109 Added "/* SAFE */" comments in pngrutil.c and pngrtran.c where warnings
110 may be erroneously issued by code-checking applications.
112 Send comments/corrections/commendations to png-mng-implement at lists.sf.net
113 (subscription required; visit
114 https://lists.sourceforge.net/lists/listinfo/png-mng-implement
116 or to glennrp at users.sourceforge.net