
Libpng 1.2.35beta01 - February 4, 2009

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.35beta01.tar.gz
   libpng-1.2.35beta01.tar.lzma
     (Get the lzma codec from <http://tukaani.org/lzma>).
   libpng-1.2.35beta01.tar.bz2

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

   libpng-1.2.35beta01-no-config.tar.gz
   libpng-1.2.35beta01-no-config.tar.lzma
   libpng-1.2.35beta01-no-config.tar.bz2

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

   lp1235b01.zip
   lp1235b01.7z
   lp1235b01.tar.bz2

Project files

   libpng-1.2.35beta01-project-netware.zip
   libpng-1.2.35beta01-project-wince.zip

Other information:

   libpng-1.2.35beta01-README.txt
   libpng-1.2.35beta01-KNOWNBUGS.txt
   libpng-1.2.35beta01-LICENSE.txt
   libpng-1.2.35beta01-Y2K-compliance.txt
   libpng-1.2.35beta01-[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 [February 4, 2009]
  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).

version 1.2.34beta06 [December 9, 2008]
  In png_write_png(), respect the placement of the filler bytes in an earlier
    call to png_set_filler() (Jim Barry).

version 1.2.34beta07 [December 10, 2008]
  Undid previous change and added PNG_TRANSFORM_STRIP_FILLER_BEFORE and
    PNG_TRANSFORM_STRIP_FILLER_AFTER conditionals and deprecated
    PNG_TRANSFORM_STRIP_FILLER (Jim Barry).

version 1.0.42rc01, 1.2.34rc01 [December 11, 2008]
  No changes.

version 1.0.42, 1.2.34 [February 4, 2009]
  No changes.

version 1.2.35beta01 [February 4, 2009]
  Zero out all arrays of pointers after png_malloc(). (Tavis Ormandy)

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
