
Libpng 1.5.18beta04 - January 10, 2014

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

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

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

Other information:

   1.5.18beta04-README.txt
   1.5.18beta04-LICENSE.txt

Changes since the last public release (1.5.17):

Version 1.5.18beta01 [August 21, 2013]
  Delay calling png_init_filter_functions() until a row with nonzero filter
    is found.

Version 1.5.18beta02 [December 26, 2013]
  Changed tabs to 3 spaces in png_debug macros and changed '"%s"m'
    to '"%s" m' to improve portability among compilers.
  Added "-Wall" to CFLAGS in contrib/pngminim/*/makefile
  Conditionally compile some unused functions reported by -Wall in
    pngminim.
  Rebuilt configure scripts with automake-1.14.1 and autoconf-2.69
    in the tar distributions.

Version 1.5.18beta03 [January 1, 2014]
  Fixed 'unused' warnings and merged with libpng16 pngvalid.
    Various warnings revealed by configurations added to the tested
    configurations in libpng 1.6 need corresponding fixes in libpng 1.5.
    This takes the libpng 1.6 pngvalid.c and adds it back to libpng 1.5,
    however one write-only test is currently disabled because it does not
    work; possibly because of failures to reset or initialize the deflate
    stream correctly in write-only cases.
  Merged libpng-1.7 changes and created a single pngvalid.c
  Merged pngvalid and pngtest from libpng-1.5; made compressed chunks
    after IDAT work with the progressive read code (this is a minor and
    somewhat ugly fix-up; the proper fix is in 1.6).
  The 'make all-am' command no longer builds $(check_PROGRAMS), leading
    to a lack of checks on cross-builds such as ARM.  Makefile.am also
    requires correct dependencies for the check programs on pnglibconf.h
    otherwise parallel builds on fast machines can sometimes pick up the
    system pnglibconf.h.
  Rebuilt configure scripts with automake 1.14.1 and autoconf-2.69.
  Require automake-1.13 and enable automake "subdirs" feature in autoconf.ac.
  Allow unversioned links created on install to be disabled in configure.
    In configure builds 'make install' changes/adds links like png.h
    and libpng.a to point to the newly installed, versioned, files (e.g.
    libpng17/png.h and libpng17.a). Three new configure options and some
    rearrangement of Makefile.am allow creation of these links to be disabled.

Version 1.5.18beta04 [January 10, 2014]
  Removed potentially misleading warning from png_check_IHDR().

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
