
Libpng 1.5.1beta02 - January 14, 2011

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.1beta02.tar.xz (LZMA-compressed, recommended)
   1.5.1beta02.tar.gz
   1.5.1beta02.tar.bz2

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

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

Other information:

   1.5.1beta02-README.txt
   1.5.1beta02-LICENSE.txt

Changes since the last public release (1.5.0):

version 1.5.1beta01 [January 8, 2011]
  Added description of png_set_crc_action() to the manual.
  Added a note in the manual that the type of the iCCP profile was changed
    from png_charpp to png_bytepp in png_get_iCCP().  This change happened
    in version 1.5.0beta36 but is not noted in the CHANGES.  Similarly,
    it was changed from png_charpp to png_const_bytepp in png_set_iCCP().
  Ensure that png_rgb_to_gray ignores palette mapped images,
  Fixed the failure to handle palette mapped images correctly.

Version 1.5.1beta02 [January 14, 2011]
  Fixed a bug in handling of interlaced images (bero at arklinux.org).
  Updated CMakeLists.txt (Clifford Yapp)

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
