+Version 1.5.3beta01 [April 1, 2011]
+ Re-initialize the zlib compressor before compressing non-IDAT chunks.
+ Added API functions (png_set_text_compression_level() and four others) to
+ set parameters for zlib compression of non-IDAT chunks.
+
+Version 1.5.3beta02 [April 3, 2011]
+ Updated scripts/symbols.def with new API functions.
+ Only compile the new zlib re-initializing code when text or iCCP is
+ supported, using PNG_WRITE_COMPRESSED_TEXT_SUPPORTED macro.
+ Improved the optimization of the zlib CMF byte (see libpng-1.2.6beta03).
+ Optimize the zlib CMF byte in non-IDAT compressed chunks
+
+Version 1.5.3beta03 [April 16, 2011]
+ Fixed gcc -ansi -pedantic compile. A strict ANSI system does not have
+ snprintf, and the "__STRICT_ANSI__" detects that condition more reliably
+ than __STDC__ (John Bowler).
+ Removed the PNG_PTR_NORETURN attribute because it too dangerous. It tells
+ the compiler that a user supplied callback (the error handler) does not
+ return, yet there is no guarantee in practice that the application code
+ will correctly implement the error handler because the compiler only
+ issues a warning if there is a mistake (John Bowler).
+ Removed the no-longer-used PNG_DEPSTRUCT macro.
+ Updated the zlib version to 1.2.5 in the VStudio project.
+ Fixed 64-bit builds where png_uint_32 is smaller than png_size_t in
+ pngwutil.c (John Bowler).
+ Fixed bug with stripping the filler or alpha channel when writing, that
+ was introduced in libpng-1.5.2beta01 (bug report by Andrew Church).
+
+Version 1.5.3beta04 [April 27, 2011]
+ Updated pngtest.png with the new zlib CMF optimization.
+ Cleaned up conditional compilation code and of background/gamma handling
+ Internal changes only except a new option to avoid compiling the
+ png_build_grayscale_palette API (which is not used at all internally.)
+ The main change is to move the transform tests (READ_TRANSFORMS,
+ WRITE_TRANSFORMS) up one level to the caller of the APIs. This avoids
+ calls to spurious functions if all transforms are disabled and slightly
+ simplifies those functions. Pngvalid modified to handle this.
+ A minor change is to stop the strip_16 and expand_16 interfaces from
+ disabling each other; this allows the future alpha premultiplication
+ code to use 16-bit intermediate values while still producing 8-bit output.
+ png_do_background and png_do_gamma have been simplified to take a single
+ pointer to the png_struct rather than pointers to every item required
+ from the png_struct. This makes no practical difference to the internal
+ code.
+ A serious bug in the pngvalid internal routine 'standard_display_init' has
+ been fixed - this failed to initialize the red channel and accidentally
+ initialized the alpha channel twice.
+ Changed png_struct jmp_buf member name from png_jmpbuf to tmp_jmpbuf to
+ avoid a possible clash with the png_jmpbuf macro on some platforms.
+
+Version 1.5.3beta05 [May 6, 2011]
+ Added the "_POSIX_SOURCE" feature test macro to ensure libpng sees the
+ correct API. _POSIX_SOURCE is defined in pngpriv.h, pngtest.c and
+ pngvalid.c to ensure that POSIX conformant systems disable non-POSIX APIs.
+ Removed png_snprintf and added formatted warning messages. This change adds
+ internal APIs to allow png_warning messages to have parameters without
+ requiring the host OS to implement snprintf. As a side effect the
+ dependency of the tIME-supporting RFC1132 code on stdio is removed and
+ PNG_NO_WARNINGS does actually work now.
+ Pass "" instead of '\0' to png_default_error() in png_err(). This mistake
+ was introduced in libpng-1.2.20beta01. This fixes CVE-2011-2691.
+ Added PNG_WRITE_OPTIMIZE_CMF_SUPPORTED macro to make the zlib "CMF" byte
+ optimization configureable.
+ IDAT compression failed if preceded by a compressed text chunk (bug
+ introduced in libpng-1.5.3beta01-02). This was because the attempt to
+ reset the zlib stream in png_write_IDAT happened after the first IDAT
+ chunk had been deflated - much too late. In this change internal
+ functions were added to claim/release the z_stream and, hopefully, make
+ the code more robust. Also deflateEnd checking is added - previously
+ libpng would ignore an error at the end of the stream.
+
+Version 1.5.3beta06 [May 8, 2011]
+ Removed the -D_ALL_SOURCE from definitions for AIX in CMakeLists.txt
+ Implemented premultiplied alpha support: png_set_alpha_mode API
+
+Version 1.5.3beta07 [May 11, 2011]
+ Added expand_16 support to the high level interface.
+ Added named value and 'flag' gamma support to png_set_gamma. Made a minor
+ change from the previous (unreleased) ABI/API to hide the exact value used
+ for Macs - it's not a good idea to embed this in the ABI!
+ Moved macro definitions for PNG_HAVE_IHDR, PNG_HAVE_PLTE, and PNG_AFTER_IDAT
+ from pngpriv.h to png.h because they must be visible to applications
+ that call png_set_unknown_chunks().
+ Check for up->location !PNG_AFTER_IDAT when writing unknown chunks
+ before IDAT.
+
+Version 1.5.3beta08 [May 16, 2011]
+ Improved "pngvalid --speed" to exclude more of pngvalid from the time.
+ Documented png_set_alpha_mode(), other changes in libpng.3/libpng-manual.txt
+ The cHRM chunk now sets the defaults for png_set_rgb_to_gray() (when negative
+ parameters are supplied by the caller), while in the absence of cHRM
+ sRGB/Rec 709 values are still used. This introduced a divide-by-zero
+ bug in png_handle_cHRM().
+ The bKGD chunk no longer overwrites the background value set by
+ png_set_background(), allowing the latter to be used before the file
+ header is read. It never performed any useful function to override
+ the default anyway.
+ Added memory overwrite and palette image checks to pngvalid.c
+ Previously palette image code was poorly checked. Since the transformation
+ code has a special palette path in most cases this was a severe weakness.
+ Minor cleanup and some extra checking in pngrutil.c and pngrtran.c. When
+ expanding an indexed image, always expand to RGBA if transparency is
+ present.
+
+Version 1.5.3beta09 [May 17, 2011]
+ Reversed earlier 1.5.3 change of transformation order; move png_expand_16
+ back where it was. The change doesn't work because it requires 16-bit
+ gamma tables when the code only generates 8-bit ones. This fails
+ silently; the libpng code just doesn't do any gamma correction. Moving
+ the tests back leaves the old, inaccurate, 8-bit gamma calculations, but
+ these are clearly better than none!
+
+Version 1.5.3beta10 [May 20, 2011]
+
+ png_set_background() and png_expand_16() did not work together correctly.
+ This problem is present in 1.5.2; if png_set_background is called with
+ need_expand false and the matching 16 bit color libpng erroneously just
+ treats it as an 8-bit color because of where png_do_expand_16 is in the
+ transform list. This simple fix reduces the supplied colour to 8-bits,
+ so it gets smashed, but this is better than the current behavior.
+ Added tests for expand16, more fixes for palette image tests to pngvalid.
+ Corrects the code for palette image tests and disables attempts to
+ validate palette colors.
+
+Version 1.5.3rc01 [June 3, 2011]
+ No changes.
+
+Version 1.5.3rc02 [June 8, 2011]
+ Fixed uninitialized memory read in png_format_buffer() (Bug report by
+ Frank Busse, CVE-2011-2501, related to CVE-2004-0421).
+
+Version 1.5.3beta11 [June 11, 2011]
+ Fixed png_handle_sCAL which is broken in 1.5. This fixes CVE 2011-2692.
+ Added sCAL to pngtest.png
+ Revised documentation about png_set_user_limits() to say that it also affects
+ png writing.
+ Revised handling of png_set_user_limits() so that it can increase the
+ limit beyond the PNG_USER_WIDTH|HEIGHT_MAX; previously it could only
+ reduce it.
+ Make the 16-to-8 scaling accurate. Dividing by 256 with no rounding is
+ wrong (high by one) 25% of the time. Dividing by 257 with rounding is
+ wrong in 128 out of 65536 cases. Getting the right answer all the time
+ without division is easy.
+ Added "_SUPPORTED" to the PNG_WRITE_CUSTOMIZE_ZTXT_COMPRESSION macro.
+ Added projects/owatcom, an IDE project for OpenWatcom to replace
+ scripts/makefile.watcom. This project works with OpenWatcom 1.9. The
+ IDE autogenerates appropriate makefiles (libpng.mk) for batch processing.
+ The project is configurable, unlike the Visual Studio project, so long
+ as the developer has an awk.
+ Changed png_set_gAMA to limit the gamma value range so that the inverse
+ of the stored value cannot overflow the fixed point representation,
+ and changed other things OpenWatcom warns about.
+ Revised pngvalid.c to test PNG_ALPHA_MODE_SUPPORTED correctly. This allows
+ pngvalid to build when ALPHA_MODE is not supported, which is required if
+ it is to build on libpng 1.4.
+ Removed string/memory macros that are no longer used and are not
+ necessarily fully supportable, particularly png_strncpy and png_snprintf.
+ Added log option to pngvalid.c and attempted to improve gamma messages.
+
+Version 1.5.3 [omitted]
+ People found the presence of a beta release following an rc release
+ to be confusing; therefore we bump the version to libpng-1.5.4beta01
+ and there will be no libpng-1.5.3 release.
+
+Version 1.5.4beta01 [June 14, 2011]
+ Made it possible to undefine PNG_READ_16_TO_8_ACCURATE_SCALE_SUPPORTED
+ to get the same (inaccurate) output as libpng-1.5.2 and earlier.
+ Moved definitions of PNG_HAVE_IHDR, PNG_AFTER_IDAT, and PNG_HAVE_PLTE
+ outside of an unknown-chunk block in png.h because they are also
+ needed for other uses.
+
+Version 1.5.4beta02 [June 14, 2011]
+ Fixed and clarified LEGACY 16-to-8 scaling code.
+ Added png_set_chop_16() API, to match inaccurate results from previous
+ libpng versions.
+ Removed the ACCURATE and LEGACY options (they are no longer useable)
+ Use the old scaling method for background if png_set_chop_16() was
+ called.
+ Made png_set_chop_16() API removeable by disabling PNG_CHOP_16_TO_8_SUPPORTED
+
+Version 1.5.4beta03 [June 15, 2011]
+ Fixed a problem in png_do_expand_palette() exposed by optimization in
+ 1.5.3beta06
+ Also removed a spurious and confusing "trans" member ("trans") from png_info.
+ The palette expand optimization prevented expansion to an intermediate RGBA
+ form if tRNS was present but alpha was marked to be stripped; this exposed
+ a check for tRNS in png_do_expand_palette() which is inconsistent with the
+ code elsewhere in libpng.
+ Correction to the expand_16 code; removed extra instance of
+ png_set_scale_16_to_8 from pngpriv.h
+
+Version 1.5.4beta04 [June 16, 2011]
+ Added a missing "#ifdef PNG_READ_BACKGROUND_SUPPORTED/#endif" in pngrtran.c
+ Added PNG_TRANSFORM_CHOP_16 to the high-level read transforms.
+ Made PNG_READ_16_TO_8_ACCURATE_SCALE configurable again. If this is
+ not enabled, png_set_strip_16() and png_do_scale_16_to_8() aren't built.
+ Revised contrib/visupng, gregbook, and pngminim to demonstrate chop_16_to_8
+
+Version 1.5.4beta05 [June 16, 2011]
+ Renamed png_set_strip_16() to png_set_scale_16() and renamed
+ png_set_chop_16() to png_set_strip(16) in an attempt to minimize the
+ behavior changes between libpng14 and libpng15.
+
+Version 1.5.4beta06 [June 18, 2011]
+ Fixed new bug that was causing both strip_16 and scale_16 to be applied.
+
+Version 1.5.4beta07 [June 19, 2011]
+ Fixed pngvalid, simplified macros, added checking for 0 in sCAL.
+ The ACCURATE scale macro is no longer defined in 1.5 - call the
+ png_scale_16_to_8 API. Made sure that PNG_READ_16_TO_8 is still defined
+ if the png_strip_16_to_8 API is present. png_check_fp_number now
+ maintains some state so that positive, negative and zero values are
+ identified. sCAL uses these to be strictly spec conformant.
+
+Version 1.5.4beta08 [June 23, 2011]
+ Fixed pngvalid if ACCURATE_SCALE is defined.
+ Updated scripts/pnglibconf.h.prebuilt.
+
+Version 1.5.4rc01 [June 30, 2011]
+ Define PNG_ALLOCATED to "restrict" only if MSC_VER >= 1400.
+
+Version 1.5.4 [July 7, 2011]
+ No changes.
+
+Version 1.5.5beta01 [July 13, 2011]
+ Fixed some typos and made other minor changes in the manual.
+ Updated contrib/pngminus/makefile.std (Samuli Souminen)
+
+Version 1.5.5beta02 [July 14, 2011]
+ Revised Makefile.am and Makefile.in to look in the right directory for
+ pnglibconf.h.prebuilt
+
+Version 1.5.5beta03 [July 27, 2011]
+ Enabled compilation with g++ compiler. This compiler does not recognize
+ the file extension, so it always compiles with C++ rules. Made minor
+ changes to pngrutil.c to cast results where C++ expects it but C does not.
+ Minor editing of libpng.3 and libpng-manual.txt.
+
+Version 1.5.5beta04 [July 29, 2011]
+ Revised CMakeLists.txt (Clifford Yapp)
+ Updated commentary about the png_rgb_to_gray() default coefficients
+ in the manual and in pngrtran.c
+
+Version 1.5.5beta05 [August 17, 2011]
+ Prevent unexpected API exports from non-libpng DLLs on Windows. The "_DLL"
+ is removed from the test of whether a DLL is being built (this erroneously
+ caused the libpng APIs to be marked as DLL exports in static builds under
+ Microsoft Visual Studio). Almost all of the libpng building configuration
+ is moved from pngconf.h to pngpriv.h, but PNG_DLL_EXPORT remains in
+ pngconf.h, though, so that it is colocated with the import definition (it
+ is no longer used anywhere in the installed headers). The VStudio project
+ definitions have been cleaned up: "_USRDLL" has been removed from the
+ static library builds (this was incorrect), and PNG_USE_DLL has been added
+ to pngvalid to test the functionality (pngtest does not supply it,
+ deliberately). The spurious "_EXPORTS" has been removed from the
+ libpng build (all these errors were a result of copy/paste between project
+ configurations.)
+ Added new types and internal functions for CIE RGB end point handling to
+ pngpriv.h (functions yet to be implemented).
+
+Version 1.5.5beta06 [August 26, 2011]
+ Ensure the CMAKE_LIBRARY_OUTPUT_DIRECTORY is set in CMakeLists.txt
+ (Clifford Yap)
+ Fixes to rgb_to_gray and cHRM XYZ APIs (John Bowler):
+ The rgb_to_gray code had errors when combined with gamma correction.
+ Some pixels were treated as true grey when they weren't and such pixels
+ and true grey ones were not gamma corrected (the original value of the
+ red component was used instead). APIs to get and set cHRM using color
+ space end points have been added and the rgb_to_gray code that defaults
+ based on cHRM, and the divide-by-zero bug in png_handle_cHRM (CERT
+ VU#477046, CVE-2011-3328, introduced in 1.5.4) have been corrected.
+ A considerable number of tests has been added to pngvalid for the
+ rgb_to_gray transform.
+ Arithmetic errors in rgb_to_gray whereby the calculated gray value was
+ truncated to the bit depth rather than rounded have been fixed except in
+ the 8-bit non-gamma-corrected case (where consistency seems more important
+ than correctness.) The code still has considerable inaccuracies in the
+ 8-bit case because 8-bit linear arithmetic is used.
+
+Version 1.5.5beta07 [September 7, 2011]
+ Added "$(ARCH)" option to makefile.darwin
+ Added SunOS support to configure.ac and Makefile.am
+ Changed png_chunk_benign_error() to png_warning() in png.c, in
+ png_XYZ_from_xy_checked().
+
+Version 1.5.5beta08 [September 10, 2011]
+ Fixed 64-bit compilation errors (gcc). The errors fixed relate
+ to conditions where types that are 32 bits in the GCC 32-bit
+ world (uLong and png_size_t) become 64 bits in the 64-bit
+ world. This produces potential truncation errors which the
+ compiler correctly flags.
+ Relocated new HAVE_SOLARIS_LD definition in configure.ac
+ Constant changes for 64-bit compatibility (removal of L suffixes). The
+ 16-bit cases still use "L" as we don't have a 16-bit test system.
+
+Version 1.5.5rc01 [September 15, 2011]
+ Removed "L" suffixes in pngpriv.h
+
+Version 1.5.5 [September 22, 2011]
+ No changes.
+
+Version 1.5.6beta01 [September 22, 2011]
+ Fixed some 64-bit type conversion warnings in pngrtran.c
+ Moved row_info from png_struct to a local variable.
+ The various interlace mask arrays have been made into arrays of
+ bytes and made PNG_CONST and static (previously some arrays were
+ marked PNG_CONST and some weren't).
+ Additional checks have been added to the transform code to validate the
+ pixel depths after the transforms on both read and write.
+ Removed some redundant code from pngwrite.c, in png_destroy_write_struct().
+ Changed chunk reading/writing code to use png_uint_32 instead of png_byte[4].
+ This removes the need to allocate temporary strings for chunk names on
+ the stack in the read/write code. Unknown chunk handling still uses the
+ string form because this is exposed in the API.
+
+Version 1.5.6beta02 [September 26, 2011]
+ Added a note in the manual the png_read_update_info() must be called only
+ once with a particular info_ptr.
+ Fixed a typo in the definition of the new PNG_STRING_FROM_CHUNK(s,c) macro.
+
+Version 1.5.6beta03 [September 28, 2011]
+ Revised test-pngtest.sh to report FAIL when pngtest fails.
+ Added "--strict" option to pngtest, to report FAIL when the failure is
+ only because the resulting valid files are different.
+ Revised CMakeLists.txt to work with mingw and removed some material from
+ CMakeLists.txt that is no longer useful in libpng-1.5.
+
+Version 1.5.6beta04 [October 5, 2011]
+ Fixed typo in Makefile.in and Makefile.am ("-M Wl" should be "-M -Wl")."
+
+Version 1.5.6beta05 [October 12, 2011]
+ Speed up png_combine_row() for interlaced images. This reduces the generality
+ of the code, allowing it to be optimized for Adam7 interlace. The masks
+ passed to png_combine_row() are now generated internally, avoiding
+ some code duplication and localizing the interlace handling somewhat.
+ Align png_struct::row_buf - previously it was always unaligned, caused by
+ a bug in the code that attempted to align it; the code needs to subtract
+ one from the pointer to take account of the filter byte prepended to
+ each row.
+ Optimized png_combine_row() when rows are aligned. This gains a small
+ percentage for 16-bit and 32-bit pixels in the typical case where the
+ output row buffers are appropriately aligned. The optimization was not
+ previously possible because the png_struct buffer was always misaligned.
+ Fixed bug in png_write_chunk_header() debug print, introduced in 1.5.6beta01.
+
+Version 1.5.6beta06 [October 17, 2011]
+ Removed two redundant tests for unitialized row.
+ Fixed a relatively harmless memory overwrite in compressed text writing
+ with a 1 byte zlib buffer.
+ Add ability to call png_read_update_info multiple times to pngvalid.c.
+ Fixes for multiple calls to png_read_update_info. These fixes attend to
+ most of the errors revealed in pngvalid, however doing the gamma work
+ twice results in inaccuracies that can't be easily fixed. There is now
+ a warning in the code if this is going to happen.
+ Turned on multiple png_read_update_info in pngvalid transform tests.
+ Prevent libpng from overwriting unused bits at the end of the image when
+ it is not byte aligned, while reading. Prior to libpng-1.5.6 libpng would
+ overwrite the partial byte at the end of each row if the row width was not
+ an exact multiple of 8 bits and the image is not interlaced.
+
+Version 1.5.6beta07 [October 21, 2011]
+ Made png_ptr->prev_row an aligned pointer into png_ptr->big_prev_row
+ (Mans Rullgard).
+
+Version 1.5.6rc01 [October 26, 2011]
+ Changed misleading "Missing PLTE before cHRM" warning to "Out of place cHRM"
+
+Version 1.5.6rc02 [October 27, 2011]
+ Added LSR() macro to defend against buggy compilers that evaluate non-taken
+ code branches and complain about out-of-range shifts.
+
+Version 1.5.6rc03 [October 28, 2011]
+ Renamed the LSR() macro to PNG_LSR() and added PNG_LSL() macro.
+ Fixed compiler warnings with Intel and MSYS compilers. The logical shift
+ fix for Microsoft Visual C is required by other compilers, so this
+ enables that fix for all compilers when using compile-time constants.
+ Under MSYS 'byte' is a name declared in a system header file, so we
+ changed the name of a local variable to avoid the warnings that result.
+ Added #define PNG_ALIGN_TYPE PNG_ALIGN_NONE to contrib/pngminim/*/pngusr.h
+
+Version 1.5.6 [November 3, 2011]
+ No changes.
+
+Version 1.5.7beta01 [November 4, 2011]
+ Added support for ARM processor, when decoding all PNG up-filtered rows
+ and any other-filtered rows with 3 or 4 bytes per pixel (Mans Rullgard).
+ Fixed bug in pngvalid on early allocation failure; fixed type cast in
+ pngmem.c; pngvalid would attempt to call png_error() if the allocation
+ of a png_struct or png_info failed. This would probably have led to a
+ crash. The pngmem.c implementation of png_malloc() included a cast
+ to png_size_t which would fail on large allocations on 16-bit systems.
+ Fix for the preprocessor of the Intel C compiler. The preprocessor
+ splits adjacent @ signs with a space; this changes the concatentation
+ token from @-@-@ to PNG_JOIN; that should work with all compiler
+ preprocessors.
+ Paeth filter speed improvements from work by Siarhei Siamashka. This
+ changes the 'Paeth' reconstruction function to improve the GCC code
+ generation on x86. The changes are only part of the suggested ones;
+ just the changes that definitely improve speed and remain simple.
+ The changes also slightly increase the clarity of the code.
+
+Version 1.5.7beta02 [November 11, 2011]
+ Check compression_type parameter in png_get_iCCP and remove spurious
+ casts. The compression_type parameter is always assigned to, so must
+ be non-NULL. The cast of the profile length potentially truncated the
+ value unnecessarily on a 16-bit int system, so the cast of the (byte)
+ compression type to (int) is specified by ANSI-C anyway.
+ Fixed FP division by zero in pngvalid.c; the 'test_pixel' code left
+ the sBIT fields in the test pixel as 0, which resulted in a floating
+ point division by zero which was irrelevant but causes systems where
+ FP exceptions cause a crash. Added code to pngvalid to turn on FP
+ exceptions if the appropriate glibc support is there to ensure this is
+ tested in the future.
+ Updated scripts/pnglibconf.mak and scripts/makefile.std to handle the
+ new PNG_JOIN macro.
+ Added versioning to pnglibconf.h comments.
+ Simplified read/write API initial version; basic read/write tested on
+ a variety of images, limited documentation (in the header file.)
+ Installed more accurate linear to sRGB conversion tables. The slightly
+ modified tables reduce the number of 16-bit values that
+ convert to an off-by-one 8-bit value. The "makesRGB.c" code that was used
+ to generate the tables is now in a contrib/sRGBtables sub-directory.
+
+Version 1.5.7beta03 [November 17, 2011]
+ Removed PNG_CONST from the sRGB table declarations in pngpriv.h and png.c
+ Added run-time detection of NEON support.
+ Added contrib/libtests; includes simplified API test and timing test and
+ a color conversion utility for rapid checking of failed 'pngstest' results.
+ Multiple transform bug fixes plus a work-round for double gamma correction.
+ libpng does not support more than one transform that requires linear data
+ at once - if this is tried typically the results is double gamma
+ correction. Since the simplified APIs can need rgb to gray combined with
+ a compose operation it is necessary to do one of these outside the main
+ libpng transform code. This check-in also contains fixes to various bugs
+ in the simplified APIs themselves and to some bugs in compose and rgb to
+ gray (on palette) itself.
+ Fixes for C++ compilation using g++ When libpng source is compiled
+ using g++. The compiler imposes C++ rules on the C source; thus it
+ is desireable to make the source work with either C or C++ rules
+ without throwing away useful error information. This change adds
+ png_voidcast to allow C semantic (void*) cases or the corresponding
+ C++ static_cast operation, as appropriate.
+ Added --noexecstack to assembler file compilation. GCC does not set
+ this on assembler compilation, even though it does on C compilation.
+ This creates security issues if assembler code is enabled; the
+ work-around is to set it by default in the flags for $(CCAS)
+ Work around compilers that don't support declaration of const data. Some
+ compilers fault 'extern const' data declarations (because the data is
+ not initialized); this turns on const-ness only for compilers where
+ this is known to work.
+
+Version 1.5.7beta04 [November 17, 2011]
+ Since the gcc driver does not recognize the --noexecstack flag, we must
+ use the -Wa prefix to have it passed through to the assembler.
+ Also removed a duplicate setting of this flag.
+ Added files that were omitted from the libpng-1.5.7beta03 zip distribution.
+
+Version 1.5.7beta05 [November 25, 2011]
+ Removed "zTXt" from warning in generic chunk decompression function.
+ Validate time settings passed to pngset() and png_convert_to_rfc1123()
+ (Frank Busse).
+ Added MINGW support to CMakeLists.txt
+ Reject invalid compression flag or method when reading the iTXt chunk.
+ Backed out 'simplified' API changes. The API seems too complex and there
+ is a lack of consensus or enthusiasm for the proposals. The API also
+ reveals significant bugs inside libpng (double gamma correction and the
+ known bug of being unable to retrieve a corrected palette). It seems
+ better to wait until the bugs, at least, are corrected.
+ Moved pngvalid.c into contrib/libtests
+ Rebuilt Makefile.in, configure, etc., with autoconf-2.68
+
+Version 1.5.7rc01 [December 1, 2011]
+ Replaced an "#if" with "#ifdef" in pngrtran.c
+ Revised #if PNG_DO_BC block in png.c (use #ifdef and add #else)
+
+Version 1.5.7rc02 [December 5, 2011]
+ Revised project files and contrib/pngvalid/pngvalid.c to account for
+ the relocation of pngvalid into contrib/libtests.
+ Revised pngconf.h to use " __declspec(restrict)" only when MSC_VER >= 1400,
+ as in libpng-1.5.4.
+ Put CRLF line endings in the owatcom project files.
+
+Version 1.5.7rc03 [December 7, 2011]
+ Updated CMakeLists.txt to account for the relocation of pngvalid.c
+
+Version 1.5.7 [December 15, 2011]
+ Minor fixes to pngvalid.c for gcc 4.6.2 compatibility to remove warnings
+ reported by earlier versions.
+ Fixed minor memset/sizeof errors in pngvalid.c.
+
+Version 1.6.0beta01 [December 15, 2011]
+ Removed machine-generated configure files from the GIT repository (they will
+ continue to appear in the tarball distributions and in the libpng15 and
+ earlier GIT branches).
+ Restored the new 'simplified' API, which was started in libpng-1.5.7beta02
+ but later deleted from libpng-1.5.7beta05.
+ Added example programs for the new 'simplified' API.
+ Added ANSI-C (C90) headers and require them, and take advantage of the
+ change. Also fixed some of the projects/* and contrib/* files that needed
+ updates for libpng16 and the move of pngvalid.c.
+ With this change the required ANSI-C header files are assumed to exist: the
+ implementation must provide float.h, limits.h, stdarg.h and stddef.h and
+ libpng relies on limits.h and stddef.h existing and behaving as defined
+ (the other two required headers aren't used). Non-ANSI systems that don't
+ have stddef.h or limits.h will have to provide an appropriate fake
+ containing the relevant types and #defines.
+ The use of FAR/far has been eliminated and the definition of png_alloc_size_t
+ is now controlled by a flag so that 'small size_t' systems can select it
+ if necessary. Libpng 1.6 may not currently work on such systems -- it
+ seems likely that it will ask 'malloc' for more than 65535 bytes with any
+ image that has a sufficiently large row size (rather than simply failing
+ to read such images).
+ New tools directory containing tools used to generate libpng code.
+ Fixed race conditions in parallel make builds. With higher degrees of
+ parallelism during 'make' the use of the same temporary file names such
+ as 'dfn*' can result in a race where a temporary file from one arm of the
+ build is deleted or overwritten in another arm. This changes the
+ temporary files for suffix rules to always use $* and ensures that the
+ non-suffix rules use unique file names.
+
+Version 1.6.0beta02 [December 21, 2011]
+ Correct configure builds where build and source directories are separate.
+ The include path of 'config.h' was erroneously made relative in pngvalid.c
+ in libpng 1.5.7.
+
+Version 1.6.0beta03 [December 22, 2011]
+ Start-up code size improvements, error handler flexibility. These changes
+ alter how the tricky allocation of the initial png_struct and png_info
+ structures are handled. png_info is now handled in pretty much the same
+ way as everything else, except that the allocations handle NULL return
+ silently. png_struct is changed in a similar way on allocation and on
+ deallocation a 'safety' error handler is put in place (which should never
+ be required). The error handler itself is changed to permit mismatches
+ in the application and libpng error buffer size; however, this means a
+ silent change to the API to return the jmp_buf if the size doesn't match
+ the size from the libpng compilation; libpng now allocates the memory and
+ this may fail. Overall these changes result in slight code size
+ reductions; however, this is a reduction in code that is always executed
+ so is particularly valuable. Overall on a 64-bit system the libpng DLL
+ decreases in code size by 1733 bytes. pngerror.o increases in size by
+ about 465 bytes because of the new functionality.
+ Added png_convert_to_rfc1123_buffer() and deprecated png_convert_to_rfc1123()
+ to avoid including a spurious buffer in the png_struct.
+
+Version 1.6.0beta04 [December 30, 2011]
+ Regenerated configure scripts with automake-1.11.2
+ Eliminated png_info_destroy(). It is now used only in png.c and only calls
+ one other internal function and memset().
+ Enabled png_get_sCAL_fixed() if floating point APIs are enabled. Previously
+ it was disabled whenever internal fixed point arithmetic was selected,
+ which meant it didn't exist even on systems where FP was available but not
+ preferred.
+ Added pngvalid.c compile time checks for const APIs.
+ Implemented 'restrict' for png_info and png_struct. Because of the way
+ libpng works both png_info and png_struct are always accessed via a
+ single pointer. This means adding C99 'restrict' to the pointer gives
+ the compiler some opportunity to optimize the code. This change allows
+ that.
+ Moved AC_MSG_CHECKING([if libraries can be versioned]) later to the proper
+ location in configure.ac (Gilles Espinasse).
+ Changed png_memcpy to C assignment where appropriate. Changed all those
+ uses of png_memcpy that were doing a simple assignment to assignments
+ (all those cases where the thing being copied is a non-array C L-value).
+ Added some error checking to png_set_*() routines.
+ Removed the reference to the non-exported function png_memcpy() from
+ example.c.
+ Fixed the Visual C 64-bit build - it requires jmp_buf to be aligned, but
+ it had become misaligned.
+ Revised contrib/pngminus/pnm2png.c to avoid warnings when png_uint_32
+ and unsigned long are of different sizes.
+
+Version 1.6.0beta05 [January 15, 2012]
+ Updated manual with description of the simplified API (copied from png.h)
+ Fix bug in pngerror.c: some long warnings were being improperly truncated
+ (CVE-2011-3464, bug introduced in libpng-1.5.3beta05).
+
+Version 1.6.0beta06 [January 24, 2012]
+ Added palette support to the simplified APIs. This commit
+ changes some of the macro definitions in png.h, app code
+ may need corresponding changes.
+ Increased the formatted warning buffer to 192 bytes.
+ Added color-map support to simplified API. This is an initial version for
+ review; the documentation has not yet been updated.
+ Fixed Min/GW uninstall to remove libpng.dll.a
+
+Version 1.6.0beta07 [January 28, 2012]
+ Eliminated Intel icc/icl compiler warnings. The Intel (GCC derived)
+ compiler issues slightly different warnings from those issued by the
+ current vesions of GCC. This eliminates those warnings by
+ adding/removing casts and small code rewrites.
+ Updated configure.ac from autoupdate: added --enable-werror option.
+ Also some layout regularization and removal of introduced tab characters
+ (replaced with 3-character indentation). Obsolete macros identified by
+ autoupdate have been removed; the replacements are all in 2.59 so
+ the pre-req hasn't been changed. --enable-werror checks for support
+ for -Werror (or the given argument) in the compiler. This mimics the
+ gcc configure option by allowing -Werror to be turned on safely; without
+ the option the tests written in configure itself fail compilation because
+ they cause compiler warnings.
+ Rewrote autogen.sh to run autoreconf instead of running tools one-by-one.
+ Conditionalize the install rules for MINGW and CYGWIN in CMakeLists.txt and
+ set CMAKE_LIBRARY_OUTPUT_DIRECTORY to "lib" on all platforms (C. Yapp).
+ Freeze libtool files in the 'scripts' directory. This version of autogen.sh
+ attempts to dissuade people from running it when it is not, or should not,
+ be necessary. In fact, autogen.sh does not work when run in a libpng
+ directory extracted from a tar distribution anymore. You must run it in
+ a GIT clone instead.
+ Added two images to contrib/pngsuite (1-bit and 2-bit transparent grayscale),
+ and renamed three whose names were inconsistent with those in
+ pngsuite/README.txt.
+
+Version 1.6.0beta08 [February 1, 2012]
+ Fixed Image::colormap misalignment in pngstest.c
+ Check libtool/libtoolize version number (2.4.2) in configure.ac
+ Divide test-pngstest.sh into separate pngstest runs for basic and
+ transparent images.
+ Moved automake options to AM_INIT_AUTOMAKE in configure.ac
+ Added color-tests, silent-rules (Not yet implemented in Makefile.am) and
+ version checking to configure.ac
+ Improved pngstest speed by not doing redundant tests and add const to
+ the background parameter of png_image_finish_read. The --background
+ option is now done automagically only when required, so that commandline
+ option no longer exists.
+ Cleaned up pngpriv.h to consistently declare all functions and data.
+ Also eliminated PNG_CONST_DATA, which is apparently not needed but we
+ can't be sure until it is gone.
+ Added symbol prefixing that allows all the libpng external symbols
+ to be prefixed (suggested by Reuben Hawkins).
+ Updated "ftbb*.png" list in the owatcom and vstudio projects.
+ Fixed 'prefix' builds on clean systems. The generation of pngprefix.h
+ should not require itself.
+ Updated INSTALL to explain that autogen.sh must be run in a GIT clone,
+ not in a libpng directory extracted from a tar distribution.
+
+Version 1.6.0beta09 [February 1, 2012]
+ Reverted the prebuilt configure files to libpng-1.6.0beta05 condition.
+
+Version 1.6.0beta10 [February 3, 2012]
+ Added Z_SOLO for zlib-1.2.6+ and correct pngstest tests
+ Updated list of test images in CMakeLists.txt
+ Updated the prebuilt configure files to current condition.
+ Revised INSTALL information about autogen.sh; it works in tar distributions.
+
+Version 1.6.0beta11 [February 16, 2012]
+ Fix character count in pngstest command in projects/owatcom/pngstest.tgt
+ Revised test-pngstest.sh to report PASS/FAIL for each image.
+ Updated documentation about the simplified API.
+ Corrected estimate of error in libpng png_set_rgb_to_gray API. The API is
+ extremely inaccurate for sRGB conversions because it uses an 8-bit
+ intermediate linear value and it does not use the sRGB transform, so it
+ suffers from the known instability in gamma transforms for values close
+ to 0 (see Poynton). The net result is that the calculation has a maximum
+ error of 14.99/255; 0.5/255^(1/2.2). pngstest now uses 15 for the
+ permitted 8-bit error. This may still not be enough because of arithmetic
+ error.
+ Removed some unused arrays (with #ifdef) from png_read_push_finish_row().
+ Fixed a memory overwrite bug in simplified read of RGB PNG with
+ non-linear gamma Also bugs in the error checking in pngread.c and changed
+ quite a lot of the checks in pngstest.c to be correct; either correctly
+ written or not over-optimistic. The pngstest changes are insufficient to
+ allow all possible RGB transforms to be passed; pngstest cmppixel needs
+ to be rewritten to make it clearer which errors it allows and then changed
+ to permit known inaccuracies.
+ Removed tests for no-longer-used *_EMPTY_PLTE_SUPPORTED from pngstruct.h
+ Fixed fixed/float API export conditionals. 1) If FIXED_POINT or
+ FLOATING_POINT options were switched off, png.h ended up with lone ';'
+ characters. This is not valid ANSI-C outside a function. The ';'
+ characters have been moved inside the definition of PNG_FP_EXPORT and
+ PNG_FIXED_EXPORT. 2) If either option was switched off, the declaration
+ of the corresponding functions were completely omitted, even though some
+ of them are still used internally. The result is still valid, but
+ produces warnings from gcc with some warning options (including -Wall). The
+ fix is to cause png.h to declare the functions with PNG_INTERNAL_FUNCTION
+ when png.h is included from pngpriv.h.
+ Check for invalid palette index while reading paletted PNG. When one is
+ found, issue a warning and increase png_ptr->num_palette accordingly.
+ Apps are responsible for checking to see if that happened.
+
+Version 1.6.0beta12 [February 18, 2012]
+ Do not increase num_palette on invalid_index.
+ Relocated check for invalid palette index to pngrtran.c, after unpacking
+ the sub-8-bit pixels.
+ Fixed CVE-2011-3026 buffer overrun bug. This bug was introduced when
+ iCCP chunk support was added at libpng-1.0.6. Deal more correctly with the
+ test on iCCP chunk length. Also removed spurious casts that may hide
+ problems on 16-bit systems.
+
+Version 1.6.0beta13 [February 24, 2012]
+ Eliminated redundant png_push_read_tEXt|zTXt|iTXt|unknown code from
+ pngpread.c and use the sequential png_handle_tEXt, etc., in pngrutil.c;
+ now that png_ptr->buffer is inaccessible to applications, the special
+ handling is no longer useful.
+ Added PNG_SAFE_LIMITS feature to pnglibconf.dfa, pngpriv.h, and new
+ pngusr.dfa to reset the user limits to safe ones if PNG_SAFE_LIMITS is
+ defined. To enable, use "CPPFLAGS=-DPNG_SAFE_LIMITS_SUPPORTED=1" on the
+ configure command or put #define PNG_SAFE_LIMITS_SUPPORTED in
+ pnglibconf.h.prebuilt and pnglibconf.h.
+
+Version 1.6.0beta14 [February 27, 2012]
+ Added information about the new limits in the manual.
+ Updated Makefile.in
+
+Version 1.6.0beta15 [March 2, 2012]
+ Removed unused "current_text" members of png_struct and the png_free()
+ of png_ptr->current_text from pngread.c
+ Rewrote pngstest.c for substantial speed improvement.
+ Fixed transparent pixel and 16-bit rgb tests in pngstest and removed a
+ spurious check in pngwrite.c
+ Added PNG_IMAGE_FLAG_FAST for the benefit of applications that store
+ intermediate files, or intermediate in-memory data, while processing
+ image data with the simplified API. The option makes the files larger
+ but faster to write and read. pngstest now uses this by default; this
+ can be disabled with the --slow option.
+ Improved pngstest fine tuning of error numbers, new test file generator.
+ The generator generates images that test the full range of sample values,
+ allow the error numbers in pngstest to be tuned and checked. makepng
+ also allows generation of images with extra chunks, although this is
+ still work-in-progress.
+ Added check for invalid palette index while reading.
+ Fixed some bugs in ICC profile writing. The code should now accept
+ all potentially valid ICC profiles and reject obviously invalid ones.
+ It now uses png_error() to do so rather than casually writing a PNG
+ without the necessary color data.
+ Removed whitespace from the end of lines in all source files and scripts.
+
+Version 1.6.0beta16 [March 6, 2012]
+ Relocated palette-index checking function from pngrutil.c to pngtrans.c
+ Added palette-index checking while writing.
+ Changed png_inflate() and calling routines to avoid overflow problems.
+ This is an intermediate check-in that solves the immediate problems and
+ introduces one performance improvement (avoiding a copy via png_ptr->zbuf.)
+ Further changes will be made to make ICC profile handling more secure.
+ Fixed build warnings (MSVC, GCC, GCC v3). Cygwin GCC with default options
+ declares 'index' as a global, causing a warning if it is used as a local
+ variable. GCC 64-bit warns about assigning a (size_t) (unsigned 64-bit)
+ to an (int) (signed 32-bit). MSVC, however, warns about using the
+ unary '-' operator on an unsigned value (even though it is well defined
+ by ANSI-C to be ~x+1). The padding calculation was changed to use a
+ different method. Removed the tests on png_ptr->pass.
+ Added contrib/libtests/tarith.c to test internal arithmetic functions from
+ png.c. This is a libpng maintainer program used to validate changes to the
+ internal arithmetic functions.
+ Made read 'inflate' handling like write 'deflate' handling. The read
+ code now claims and releases png_ptr->zstream, like the write code.
+ The bug whereby the progressive reader failed to release the zstream
+ is now fixed, all initialization is delayed, and the code checks for
+ changed parameters on deflate rather than always calling
+ deflatedEnd/deflateInit.
+ Validate the zTXt strings in pngvalid.
+ Added code to validate the windowBits value passed to deflateInit2().
+ If the call to deflateInit2() is wrong a png_warning will be issued
+ (in fact this is harmless, but the PNG data produced may be sub-optimal).
+
+Version 1.6.0beta17 [March 10, 2012]
+ Fixed PNG_LIBPNG_BUILD_BASE_TYPE definition.
+ Reject all iCCP chunks after the first, even if the first one is invalid.
+ Deflate/inflate was reworked to move common zlib calls into single
+ functions [rw]util.c. A new shared keyword check routine was also added
+ and the 'zbuf' is no longer allocated on progressive read. It is now
+ possible to call png_inflate() incrementally.
+ If benign errors are disabled use maximum window on ancilliary inflate.
+ This works round a bug introduced in 1.5.4 where compressed ancillary
+ chunks could end up with a too-small windowBits value in the deflate
+ header.
+
+Version 1.6.0beta18 [March 16, 2012]
+ Issue a png_benign_error() instead of png_warning() about bad palette index.
+ In pngtest, treat benign errors as errors if "-strict" is present.
+ Fixed an off-by-one error in the palette index checking function.
+ Fixed a compiler warning under Cygwin (Windows-7, 32-bit system)
+ Revised example.c to put text strings in a temporary character array
+ instead of directly assigning string constants to png_textp members.
+ This avoids compiler warnings when -Wwrite-strings is enabled.
+ Added output flushing to aid debugging under Visual Studio. Unfortunately
+ this is necessary because the VS2010 output window otherwise simply loses
+ the error messages on error (they weren't flushed to the window before
+ the process exited, apparently!)
+ Added configuration support for benign errors and changed the read
+ default. Also changed some warnings in the iCCP and sRGB handling
+ from to benign errors. Configuration now makes read benign
+ errors warnings and write benign errors to errors by default (thus
+ changing the behavior on read). The simplified API always forces
+ read benign errors to warnings (regardless of the system default, unless
+ this is disabled in which case the simplified API can't be built.)
+
+Version 1.6.0beta19 [March 18, 2012]
+ Work around for duplicate row start calls; added warning messages.
+ This turns on PNG_FLAG_DETECT_UNINITIALIZED to detect app code that
+ fails to call one of the 'start' routines (not enabled in libpng-1.5
+ because it is technically an API change, since it did normally work
+ before.) It also makes duplicate calls to png_read_start_row (an
+ internal function called at the start of the image read) benign, as
+ they were before changes to use png_inflate_claim. Somehow webkit is
+ causing this to happen; this is probably a mis-feature in the zlib
+ changes so this commit is only a work-round.
+ Removed erroneous setting of DETECT_UNINITIALIZED and added more
+ checks. The code now does a png_error if an attempt is made to do the
+ row initialization twice; this is an application error and it has
+ serious consequences because the transform data in png_struct is
+ changed by each call.
+ Added application error reporting and added chunk names to read
+ benign errors; also added --strict to pngstest - not enabled
+ yet because a warning is produced.
+ Avoid the double gamma correction warning in the simplified API.
+ This allows the --strict option to pass in the pngstest checks
+
+Version 1.6.0beta20 [March 29, 2012]
+ Changed chunk handler warnings into benign errors, incrementally load iCCP
+ Added checksum-icc.c to contrib/tools
+ Prevent PNG_EXPAND+PNG_SHIFT doing the shift twice.
+ Recognize known sRGB ICC profiles while reading; prefer writing the
+ iCCP profile over writing the sRGB chunk, controlled by the
+ PNG_sRGB_PROFILE_CHECKS option.
+ Revised png_set_text_2() to avoid potential memory corruption (fixes
+ CVE-2011-3048, also known as CVE-2012-3425).
+
+Version 1.6.0beta21 [April 27, 2012]
+ Revised scripts/makefile.darwin: use system zlib; remove quotes around
+ architecture list; add missing ppc architecture; add architecture options
+ to shared library link; don't try to create a shared lib based on missing
+ RELEASE variable.
+ Enable png_set_check_for_invalid_index() for both read and write.
+ Removed #ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED in pngpriv.h around
+ declaration of png_handle_unknown().
+ Added -lssp_nonshared in a comment in scripts/makefile.freebsd
+ and changed deprecated NOOBJ and NOPROFILE to NO_OBJ and NO_PROFILE.
+
+Version 1.6.0beta22 [May 23, 2012]
+ Removed need for -Wno-cast-align with clang. clang correctly warns on
+ alignment increasing pointer casts when -Wcast-align is passed. This
+ fixes the cases that clang warns about either by eliminating the
+ casts from png_bytep to png_uint_16p (pngread.c), or, for pngrutil.c
+ where the cast is previously verified or pngstest.c where it is OK, by
+ introducing new png_aligncast macros to do the cast in a way that clang
+ accepts.
+
+Version 1.6.0beta23 [June 6, 2012]
+ Revised CMakeLists.txt to not attempt to make a symlink under mingw.
+ Made fixes for new optimization warnings from gcc 4.7.0. The compiler
+ performs an optimization which is safe; however it then warns about it.
+ Changing the type of 'palette_number' in pngvalid.c removes the warning.
+ Do not depend upon a GCC feature macro being available for use in generating
+ the linker mapfile symbol prefix.
+ Improved performance of new do_check_palette_indexes() function (only
+ update the value when it actually increases, move test for whether
+ the check is wanted out of the function.
+
+Version 1.6.0beta24 [June 7, 2012]
+ Don't check palette indexes if num_palette is 0 (as it can be in MNG files).
+
+Version 1.6.0beta25 [June 16, 2012]
+ Revised png_set_keep_unknown_chunks() so num_chunks < 0 means ignore all
+ unknown chunks and all known chunks except for IHDR, PLTE, tRNS, IDAT,
+ and IEND. Previously it only meant ignore all unknown chunks, the
+ same as num_chunks == 0. Revised png_image_skip_unused_chunks() to
+ provide a list of chunks to be processed instead of a list of chunks to
+ ignore. Revised contrib/gregbook/readpng2.c accordingly.
+
+Version 1.6.0beta26 [July 10, 2012]
+ Removed scripts/makefile.cegcc from the *.zip and *.7z distributions; it
+ depends on configure, which is not included in those archives.
+ Moved scripts/chkfmt to contrib/tools.
+ Changed "a+w" to "u+w" in Makefile.in to fix CVE-2012-3386.
+
+Version 1.6.0beta27 [August 11, 2012]
+ Do not compile PNG_DEPRECATED, PNG_ALLOC and PNG_PRIVATE when __GNUC__ < 3.
+ Do not use __restrict when GNUC is <= 3.1
+ Removed references to png_zalloc() and png_zfree() from the manual.
+ Fixed configurations where floating point is completely disabled. Because
+ of the changes to support symbol prefixing PNG_INTERNAL_FUNCTION declares
+ floating point APIs during libpng builds even if they are completely
+ disabled. This requires the png floating point types (png_double*) to be
+ declared even though the functions are never actually defined. This
+ change provides a dummy definition so that the declarations work, yet any
+ implementation will fail to compile because of an incomplete type.
+ Re-eliminated the use of strcpy() in pngtest.c. An unncessary use of
+ strcpy() was accidentally re-introduced in libpng16; this change replaces
+ it with strncpy().
+ Eliminated use of png_sizeof(); use sizeof() instead.
+ Use a consistent style for (sizeof type) and (sizeof (array))
+ Cleanup of png_set_filler(). This function does very different things on
+ read and write. In libpng 1.6 the two cases can be distinguished and
+ considerable code cleanup, and extra error checking, is possible. This
+ makes calls on the write side that have no effect be ignored with a
+ png_app_error(), which can be disabled in the app using
+ png_set_benign_errors(), and removes the spurious use of usr_channels
+ on the read side.
+ Insist on autotools 1.12.1 for git builds because there are security issues
+ with 1.12 and insisting on anything less would allow 1.12 to be used.
+ Removed info_ptr->signature[8] from WRITE-only builds.
+ Add some conditions for compiling png_fixed(). This is a small function
+ but it requires "-lm" on some platforms.
+ Cause pngtest --strict to fail on any warning from libpng (not just errors)
+ and cause it not to fail at the comparison step if libpng lacks support
+ for writing chunks that it reads from the input (currently only implemented
+ for compressed text chunks).
+ Make all three "make check" test programs work without READ or WRITE support.
+ Now "make check" will succeed even if libpng is compiled with -DPNG_NO_READ
+ or -DPNG_NO_WRITE. The tests performed are reduced, but the basic reading
+ and writing of a PNG file is always tested by one or more of the tests.
+ Consistently use strlen(), memset(), memcpy(), and memcmp() instead of the
+ png_strlen(), png_memset(), png_memcpy(), and png_memcmp() macros.
+ Removed the png_sizeof(), png_strlen(), png_memset(), png_memcpy(), and
+ png_memcmp() macros.
+ Work around gcc 3.x and Microsoft Visual Studio 2010 complaints. Both object
+ to the split initialization of num_chunks.
+
+Version 1.6.0beta28 [August 29, 2012]
+ Unknown handling fixes and clean up. This adds more correct option
+ control of the unknown handling, corrects the pre-existing bug where
+ the per-chunk 'keep' setting is ignored and makes it possible to skip
+ IDAT chunks in the sequential reader (broken in earlier 1.6 versions).
+ There is a new test program, test-unknown.c, which is a work in progress
+ (not currently part of the test suite). Comments in the header files now
+ explain how the unknown handling works.
+ Allow fine grain control of unknown chunk APIs. This change allows
+ png_set_keep_unknown_chunks() to be turned off if not required and causes
+ both read and write to behave appropriately (on read this is only possible
+ if the user callback is used to handle unknown chunks). The change
+ also removes the support for storing unknown chunks in the info_struct
+ if the only unknown handling enabled is via the callback, allowing libpng
+ to be configured with callback reading and none of the unnecessary code.
+ Corrected fix for unknown handling in pngtest. This reinstates the
+ libpng handling of unknown chunks other than vpAg and sTER (including
+ unsafe-to-copy chunks which were dropped before) and eliminates the
+ repositioning of vpAg and sTER in pngtest.png by changing pngtest.png
+ (so the chunks are where libpng would put them).
+ Added "tunknown" test and corrected a logic error in png_handle_unknown()
+ when SAVE support is absent. Moved the shell test scripts for
+ contrib/libtests from the libpng top directory to contrib/libtests.
+ png_handle_unknown() must always read or skip the chunk, if
+ SAVE_UNKNOWN_CHUNKS is turned off *and* the application does not set
+ a user callback an unknown chunk will not be read, leading to a read
+ error, which was revealed by the "tunknown" test.
+ Cleaned up and corrected ICC profile handling.
+ contrib/libtests/makepng: corrected 'rgb' and 'gray' cases. profile_error
+ messages could be truncated; made a correct buffer size calculation and
+ adjusted pngerror.c appropriately. png_icc_check_* checking improved;
+ changed the functions to receive the correct color type of the PNG on read
+ or write and check that it matches the color space of the profile (despite
+ what the comments said before, there is danger in assuming the app will
+ cope correctly with an RGB profile on a grayscale image and, since it
+ violates the PNG spec, allowing it is certain to produce inconsistent
+ app behavior and might even cause app crashes.) Check that profiles
+ contain the tags needed to process the PNG (tags all required by the ICC
+ spec). Removed unused PNG_STATIC from pngpriv.h.
+
+Version 1.6.0beta29 [September 4, 2012]
+ Fixed the simplified API example programs to add the *colormap parameter
+ to several of he API and improved the error message if the version field
+ is not set.
+ Added contrib/examples/* to the *.zip and *.7z distributions.
+ Updated simplified API synopses and description of the png_image structure
+ in the manual.
+ Made makepng and pngtest produce identical PNGs, add "--relaxed" option
+ to pngtest. The "--relaxed" option turns off the benign errors that are
+ enabled by default in pre-RC builds. makepng can now write ICC profiles
+ where the length has not been extended to a multiple of 4, and pngtest
+ now intercepts all libpng errors, allowing the previously-introduced
+ "--strict test" on no warnings to actually work.
+ Improved ICC profile handling including cHRM chunk generation and fixed
+ Cygwin+MSVC build errors. The ICC profile handling now includes more
+ checking. Several errors that caused rejection of the profile are now
+ handled with a warning in such a way that the invalid profiles will be
+ read by default in release (but not pre-RC) builds but will not be
+ written by default. The easy part of handling the cHRM chunk is written,
+ where the ICC profile contains the required data. The more difficult
+ part plus guessing a gAMA value requires code to pass selected RGB values
+ through the profile.
+
+Version 1.6.0beta30 [October 24, 2012]
+ Changed ICC profile matrix/vector types to not depend on array type rules.
+ By the ANSI-C standard the new types should be identical to the previous
+ versions, and all known versions of gcc tested with the previous versions
+ except for GCC-4.2.1 work with this version. The change makes the ANSI-C
+ rule that const applied to an array of elements applies instead to the
+ elements in the array moot by explicitly applying const to the base
+ elements of the png_icc_matrix and png_icc_vector types. The accidental
+ (harmless) 'const' previously applied to the parameters of two of the
+ functions have also been removed.
+ Added a work around for GCC 4.2 optimization bug.
+ Marked the broken (bad white point) original HP sRGB profiles correctly and
+ correct comments.
+ Added -DZ_SOLO to contrib/pngminim/*/makefile to work with zlib-1.2.7
+ Use /MDd for vstudio debug builds. Also added pngunkown to the vstudio
+ builds, fixed build errors and corrected a minor exit code error in
+ pngvalid if the 'touch' file name is invalid.
+ Add updated WARNING file to projects/vstudio from libpng 1.5/vstudio
+ Fixed build when using #define PNG_NO_READ_GAMMA in png_do_compose() in
+ pngrtran.c (Domani Hannes).
+
+Version 1.6.0beta31 [November 1, 2012]
+ Undid the erroneous change to vstudio/pngvalid build in libpng-1.6.0beta30.
+ Made pngvalid so that it will build outside the libpng source tree.
+ Made builds -DPNG_NO_READ_GAMMA compile (the unit tests still fail).
+ Made PNG_NO_READ_GAMMA switch off interfaces that depend on READ_GAMMA.
+ Prior to 1.6.0 switching off READ_GAMMA did unpredictable things to the
+ interfaces that use it (specifically, png_do_background in 1.4 would
+ simply display composite for grayscale images but do composition
+ with the incorrect arithmetic for color ones). In 1.6 the semantic
+ of -DPNG_NO_READ_GAMMA is changed to simply disable any interface that
+ depends on it; this obliges people who set it to consider whether they
+ really want it off if they happen to use any of the interfaces in
+ question (typically most users who disable it won't).
+ Fixed GUIDs in projects/vstudio. Some were duplicated or missing,
+ resulting in VS2010 having to update the files.
+ Removed non-working ICC profile support code that was mostly added to
+ libpng-1.6.0beta29 and beta30. There was too much code for too little
+ gain; implementing full ICC color correction may be desireable but is left
+ up to applications.
+
+Version 1.6.0beta32 [November 25, 2012]
+ Fixed an intermittent SEGV in pngstest due to an uninitialized array element.
+ Added the ability for contrib/libtests/makepng.c to make a PNG with just one
+ color. This is useful for debugging pngstest color inaccuracy reports.
+ Fixed error checking in the simplified write API (Olaf van der Spek)
+ Made png_user_version_check() ok to use with libpng version 1.10.x and later.
+
+Version 1.6.0beta33 [December 15, 2012]
+ Fixed typo in png.c (PNG_SET_CHUNK_MALLOC_MAX should be PNG_CHUNK_MALLOC_MAX)
+ that causes the MALLOC_MAX limit not to work (John Bowler)
+ Change png_warning() to png_app_error() in pngwrite.c and comment the
+ fall-through condition.
+ Change png_warning() to png_app_warning() in png_write_tRNS().
+ Rearranged the ARM-NEON optimizations: Isolated the machine specific code
+ to the hardware subdirectory and added comments to pngrutil.c so that
+ implementors of other optimizations know what to do.
+ Fixed cases of unquoted DESTDIR in Makefile.am
+ Rebuilt Makefile.in, etc., with autoconf-2.69 and automake-1.12.5.
+
+Version 1.6.0beta34 [December 19, 2012]
+ Cleaned up whitespace in the synopsis portion of the manpage "libpng.3"
+ Disassembled the version number in scripts/options.awk (necessary for
+ building on SunOs).
+
+Version 1.6.0beta35 [December 23, 2012]
+ Made default Zlib compression settings be configurable. This adds #defines to
+ pnglibconf.h to control the defaults.
+ Fixed Windows build issues, enabled ARM compilation. Various warnings issued
+ by earlier versions of GCC fixed for Cygwin and Min/GW (which both use old
+ GCCs.) ARM support is enabled by default in zlib.props (unsupported by
+ Microsoft) and ARM compilation is made possible by deleting the check for
+ x86. The test programs cannot be run because they are not signed.
+
+Version 1.6.0beta36 [January 2, 2013]
+ Discontinued distributing libpng-1.x.x.tar.bz2.
+ Discontinued distributing libpng-1.7.0-1.6.0-diff.txt and similar.
+ Rebuilt configure with autoconf-2.69 (inadvertently not done in beta33)
+ Fixed 'make distcheck' on SUN OS - libpng.so was not being removed
+
+Version 1.6.0beta37 [January 10, 2013]
+ Fixed conceivable but difficult to repro overflow. Also added two test
+ programs to generate and test a PNG which should have the problem.
+
+Version 1.6.0beta39 [January 19, 2013]
+ Again corrected attempt at overflow detection in png_set_unknown_chunks().
+ Added overflow detection in png_set_sPLT() and png_set_text_2().
+
+Version 1.6.0beta40 [January 20, 2013]
+ Use consistent handling of overflows in text, sPLT and unknown png_set_* APIs
+
+Version 1.6.0rc01 [January 26, 2013]
+ No changes.
+
+Version 1.6.0rc02 [February 4, 2013]
+ Added png_get_palette_max() function.
+
+Version 1.6.0rc03 [February 5, 2013]
+ Fixed the png_get_palette_max API.
+
+Version 1.6.0rc04 [February 7, 2013]
+ Turn serial tests back on (recently turned off by autotools upgrade).
+
+Version 1.6.0rc05 [February 8, 2013]
+ Update manual about png_get_palette_max().
+
+Version 1.6.0rc06 [February 9, 2013]
+ Fixed missing dependency in --prefix builds The intermediate
+ internal 'prefix.h' file can only be generated correctly after
+ pnglibconf.h, however the dependency was not in Makefile.am. The
+ symptoms are unpredictable depending on the order make chooses to
+ build pngprefix.h and pnglibconf.h, often the error goes unnoticed
+ because there is a system pnglibconf.h to use instead.
+
+Version 1.6.0rc07 [February 10, 2013]
+ Enclosed the new png_get_palette_max in #ifdef PNG_GET_PALETTE_MAX_SUPPORTED
+ block, and revised pnglibconf.h and pnglibconf.h.prebuilt accordingly.
+
+Version 1.6.0rc08 [February 10, 2013]
+ Fix typo in png.h #ifdef
+
+Version 1.6.0 [February 14, 2013]
+ No changes.
+
+Version 1.6.1beta01 [February 16, 2013]
+ Made symbol prefixing work with the ARM neon optimizations. Also allow
+ pngpriv.h to be included for preprocessor definitions only, so it can
+ be used in non-C/C++ files. Back ported from libpng 1.7.
+ Made sRGB check numbers consistent.
+ Ported libpng 1.5 options.awk/dfn file handling to 1.6, fixed one bug.
+ Removed cc -E workround, corrected png_get_palette_max API Tested on
+ SUN OS cc 5.9, which demonstrates the tokenization problem previously
+ avoided by using /lib/cpp. Since all .dfn output is now protected in
+ double quotes unless it is to be macro substituted the fix should
+ work everywhere.
+ Enabled parallel tests - back ported from libpng-1.7.
+ scripts/pnglibconf.dfa formatting improvements back ported from libpng17.
+ Fixed a race condition in the creation of the build 'scripts' directory
+ while building with a parallel make.
+ Use approved/supported Android method to check for NEON, use Linux/POSIX
+ 1003.1 API to check /proc/self/auxv avoiding buffer allocation and other
+ library calls (ported from libpng15).
+
+Version 1.6.1beta02 [February 19, 2013]
+ Use parentheses more consistently in "#if defined(MACRO)" tests.
+ Folded long lines.
+ Reenabled code to allow zero length PLTE chunks for MNG.
+
+Version 1.6.1beta03 [February 22, 2013]
+ Fixed ALIGNED_MEMORY support.
+ Allow run-time ARM NEON checking to be disabled. A new configure option:
+ --enable-arm-neon=always will stop the run-time checks. New checks
+ within arm/arm_init.c will cause the code not to be compiled unless
+ __ARM_NEON__ is set. This should make it fail safe (if someone asks
+ for it on then the build will fail if it can't be done.)
+ Updated the INSTALL document.
+
+Version 1.6.1beta04 [February 27, 2013]
+ Revised INSTALL to recommend using CPPFLAGS instead of INCLUDES.
+ Revised scripts/makefile.freebsd to respect ZLIBLIB and ZLIBINC.
+ Revised scripts/dfn.awk to work with the buggy MSYS awk that has trouble
+ with CRLF line endings.
+
+Version 1.6.1beta05 [March 1, 2013]
+ Avoid a possible memory leak in contrib/gregbook/readpng.c
+
+Version 1.6.1beta06 [March 4, 2013]
+ Better documentation of unknown handling API interactions.
+ Corrected Android builds and corrected libpng.vers with symbol
+ prefixing This adds an API to set optimization options externally,
+ providing an alternative and general solution for the non-portable
+ run-time tests used by the ARM Neon code. It also makes those tests
+ compile and link on Android.
+ The order of settings vs options in pnglibconf.h is reversed to allow
+ settings to depend on options and options can now set (or override) the
+ defaults for settings.
+
+Version 1.6.1beta07 [March 7, 2013]
+ Corrected simplified API default gamma for color-mapped output, added
+ a flag to change default. In 1.6.0 when the simplified API was used
+ to produce color-mapped output from an input image with no gamma
+ information the gamma assumed for the input could be different from
+ that assumed for non-color-mapped output. In particular 16-bit depth
+ input files were assumed to be sRGB encoded, whereas in the 'direct'
+ case they were assumed to have linear data. This was an error. The
+ fix makes the simplified API treat all input files the same way and
+ adds a new flag to the png_image::flags member to allow the
+ application/user to specify that 16-bit files contain sRGB data
+ rather than the default linear.
+ Fixed bugs in the pngpixel and makepng test programs.
+
+Version 1.6.1beta08 [March 7, 2013]
+ Fixed CMakelists.txt to allow building a single variant of the library
+ (Claudio Bley):
+ Introduced a PNG_LIB_TARGETS variable that lists all activated library
+ targets. It is an error if this variable ends up empty, ie. you have
+ to build at least one library variant.
+ Made the *_COPY targets only depend on library targets actually being build.
+ Use PNG_LIB_TARGETS to unify a code path.
+ Changed the CREATE_SYMLINK macro to expect the full path to a file as the
+ first argument. When symlinking the filename component of that path is
+ determined and used as the link target.
+ Use copy_if_different in the CREATE_SYMLINK macro.
+
+Version 1.6.1beta09 [March 13, 2013]
+ Eliminated two warnings from the Intel C compiler. The warnings are
+ technically valid, although a reasonable treatment of division would
+ show it to be incorrect.
+
+Version 1.6.1rc01 [March 21, 2013]
+ No changes.