
Libpng 1.5.14beta04 - December 19, 2012

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.14beta04.tar.xz (LZMA-compressed, recommended)
   1.5.14beta04.tar.gz
   1.5.14beta04.tar.bz2

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

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

Other information:

   1.5.14beta04-README.txt
   1.5.14beta04-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).

  ===========================================================================
                       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
