
Libpng 1.5.14rc02 - January 17, 2013

This is not intended to be a public release.  It will be replaced
within a few weeks by a public version or by another test version.

Files available for download:

Source files with LF line endings (for Unix/Linux) and with a
"configure" script

   1.5.14rc02.tar.xz (LZMA-compressed, recommended)
   1.5.14rc02.tar.gz
   1.5.14rc02.tar.bz2

Source files with CRLF line endings (for Windows), without the
"configure" script

   lp1514r02.7z  (LZMA-compressed, recommended)
   lp1514r02.zip

Other information:

   1.5.14rc02-README.txt
   1.5.14rc02-LICENSE.txt

Changes since the last public release (1.5.13):

Version 1.5.14beta01 [October 24, 2012]
  Added -DZ_SOLO to contrib/pngminim/*/makefile to work with zlib-1.2.7
  Warn about the incorrect runtime library setting for VS2010 debug DLL builds.
  Fixed build when using #define PNG_NO_READ_GAMMA in png_do_compose() in
    pngrtran.c (Domani Hannes).

Version 1.5.14beta02 [omitted]

Version 1.5.14beta03 [December 15, 2012]
  Added missing "-" in front of DNO_GZIP in contrib/pngminim/*/makefile.
  Check for png_ptr==NULL earlier in png_zalloc().
  Ignore, with a warning, out-of-range value of num_trans in png_set_tRNS().
  Rearranged building of ARM NEON optimizations. The ARM specific code is
    split out entirely to the arm subdirectory and changes to configure.ac and
    Makefile.am to add new stuff are reduced.  Now material code changes,
    although for build test purposes, --enable-arm-neon now builds on non-ARM
    systems.
  Rebuilt Makefile.in, configure, etc., with autoconf-2.69 and automake-1.12.5.
  Fixed cases of unquoted DESTDIR in Makefile.am
  Fixed a minor bug in types to malloc and major bug in handling compressed
    iTXt. Compressed iTXt could not be handled.

Version 1.5.14beta04 [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.5.14beta05 [December 23, 2012]
  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.5.14beta06 [January 1, 2013]
  Discontinued distributing libpng-1.5.14-1.5.13-diff.txt and similar.
  Fixed 'make distcheck' on SUN OS - libpng.so was not being removed

Version 1.5.14beta07 [January 6, 2012]
  Replaced AM_CONFIG_HEADER(config.h) with AC_CONFIG_HEADERS([config.h])
    in configure.ac
  De-configured build fixes to make a range of deconfiguration options (such
    as switching off read or write support) work in more cases.  Also upgraded
    pngtest and pngvalid to the libpng 1.6 versions (with some modifications)
    which provide more extensive testing.  Replaced pngtest.png because pngtest
    writes the ancillary chunks in a different order.

Version 1.5.14beta08 [January 10, 2013]
  Check validity of "num_unknowns" parameter of png_set_unknown_chunks()
    (Bug report from yuris).

Version 1.5.14rc01 [January 17, 2013]
  No changes.

Version 1.5.14rc02 [January 17, 2013]
  Revised test for validity of "num_unknowns" to eliminate compiler warnings.

  ===========================================================================
                       NOTICE November 17, 2012:
     The location of the git repository at SourceForge has changed.
               Visit http://libpng.sf.net/ for details.
  ===========================================================================

Send comments/corrections/commendations to png-mng-implement at lists.sf.net
(subscription required; visit
https://lists.sourceforge.net/lists/listinfo/png-mng-implement
to subscribe)
or to glennrp at users.sourceforge.net

Glenn R-P
