
Libpng 1.2.34beta05 - December 5, 2008

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

   libpng-1.2.34beta05.tar.gz
   libpng-1.2.34beta05.tar.lzma
     (Get the lzma codec from <http://tukaani.org/lzma>).
   libpng-1.2.34beta05.tar.bz2

Source files with LF line endings (for Unix/Linux) without the
"configure" script

   libpng-1.2.34beta05-no-config.tar.gz
   libpng-1.2.34beta05-no-config.tar.lzma
   libpng-1.2.34beta05-no-config.tar.bz2

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

   lp1234b05.zip
   lp1234b05.7z
   lp1234b05.tar.bz2

Project files

   libpng-1.2.34beta05-project-netware.zip
   libpng-1.2.34beta05-project-wince.zip

Other information:

   libpng-1.2.34beta05-README.txt
   libpng-1.2.34beta05-KNOWNBUGS.txt
   libpng-1.2.34beta05-LICENSE.txt
   libpng-1.2.34beta05-Y2K-compliance.txt
   libpng-1.2.34beta05-[previous version]-diff.txt

Changes since the last public release (1.2.32):

version 1.2.33beta01 [October 6, 2008]
  Revised makefile.darwin to fix shared library numbering.
  Change png_set_gray_1_2_4_to_8() to png_set_expand_gray_1_2_4_to_8()
    in example.c (debian bug report)

version 1.2.33rc01 [October 15, 2008]
  No changes.

version 1.0.41rc01, version 1.2.33rc02 [October 23, 2008]
  Changed remaining "key" to "png_ptr->chunkdata" in png_handle_tTXt()
    to avoid memory leak after memory failure while reading tEXt chunk.`

version 1.2.33 [October 31, 2008]
  No changes.

version 1.2.34beta01 [November 27, 2008]
  Revised png_warning() to write its message on standard output by default
    when warning_fn is NULL. This was the behavior prior to libpng-1.2.9beta9.
  Fixed string vs pointer-to-string error in png_check_keyword().
  Added png_check_cHRM_fixed() in png.c and moved checking from pngget.c,
    pngrutil.c, and pngwrite.c, and eliminated floating point cHRM checking.
  Added check for zero-area RGB cHRM triange in png_check_cHRM_fixed().
  In png_check_cHRM_fixed(), ensure white_y is > 0, and removed redundant
    check for all-zero coordinates that is detected by the triangle check.
  Revised png_warning() to write its message on standard output by default
    when warning_fn is NULL.

version 1.2.34beta02 [November 28, 2008]
  Corrected off-by-one error in bKGD validity check in png_write_bKGD()
    and in png_handle_bKGD().

version 1.2.34beta03 [December 5, 2008]
  Revised bKGD validity check to use >= x instead of > x + 1
  Merged with png_debug from libpng-1.4.0 to remove newlines.

version 1.2.34beta03 [December 1, 2008]
  Revised bKGD validity check to use >= x instead of > x + 1
  Merged with png_debug from libpng-1.4.0 to remove newlines.

version 1.2.34beta04 [December 2, 2008]
  More merging with png_debug from libpng-1.4.0 to remove newlines.

version 1.2.34beta05 [December 5, 2008]
  Removed redundant check for key==NULL before calling png_check_keyword()
    to ensure that new_key gets initialized and removed extra warning
    (Arvan Pritchard).


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
