
Libpng 1.6.3beta05 - May 8, 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.6.3beta05.tar.xz (LZMA-compressed, recommended)
   1.6.3beta05.tar.gz

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

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

Other information:

   1.6.3beta05-README.txt
   1.6.3beta05-LICENSE.txt

Changes since the last public release (1.6.2):

Version 1.6.3beta01 [April 25, 2013]
  Revised stack marking in arm/filter_neon.S and configure.ac.
  Ensure that NEON filter stuff is completely disabled when switched 'off'.
    Previously the ARM NEON specific files were still built if the option
    was switched 'off' as opposed to being explicitly disabled.

Version 1.6.3beta02 [April 26, 2013]
  Test for 'arm*' not just 'arm' in the host_cpu configure variable.
  Rebuilt the configure scripts.

Version 1.6.3beta03 [April 30, 2013]
  Expanded manual paragraph about writing private chunks, particularly
    the need to call png_set_keep_unknown_chunks() when writing them.
  Avoid dereferencing NULL pointer possibly returned from
     png_create_write_struct() (Andrew Church).

Version 1.6.3beta04 [May 6, 2013]
  Calculate our own zlib windowBits when decoding rather than trusting the
    CMF bytes in the PNG datastream.

Version 1.6.3beta05 [May 8, 2013]
  Choose to use windowBits==15 or the zlib header setting via the
    benign-errors setting.  If benign errors are allowed, then ignore
    the windowBits setting in the zlib header.
  Zlib-1.2.8 and earlier don't allow us to decrease the windowBits, so
    undid the improvement in beta04.
  Check for EOF in contrib/pngminus/pnm2png.c (Paul Stewart).
  Ignore "#" delimited comments in input file to pnm2png.c.
  Added an option to force maximum window size for inflating. For inflate,
    reverted previous fixes.
  Added fixitxt and pngdeflate to the built programs and removed warnings
    from the source code and timepng that are revealed as a result.  Fixed
    fixitxt when the chunk length is more than 65535 (untested, no test case).

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
