
Libpng 1.2.24beta02 - November 30, 2007

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.24beta02.tar.gz
   libpng-1.2.24beta02.tar.bz2

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

   libpng-1.2.24beta02-no-config.tar.gz
   libpng-1.2.24beta02-no-config.tar.bz2

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

   lp1224b02.zip
   lp1224b02.tar.bz2

Project files

   libpng-1.2.24beta02-project-netware.zip
   libpng-1.2.24beta02-project-wince.zip

Other information:

   libpng-1.2.24beta02-README.txt
   libpng-1.2.24beta02-KNOWNBUGS.txt
   libpng-1.2.24beta02-LICENSE.txt
   libpng-1.2.24beta02-Y2K-compliance.txt

Changes since the last public release (1.2.23):


version 1.2.24beta01 [November 30, 2007]
  Moved misplaced test for malloc failure in png_set_sPLT().  This bug was
    introduced in libpng-1.2.20beta01.
  Ifdef out avg_row etc from png.h and pngwrite.c when PNG_NO_WRITE_FILTER
  Do not use png_ptr->free_fn and png_ptr->mem_fn in png_destroy_read_struct()
    when png_ptr is NULL (Marshall Clow).
  Updated handling of symbol prefixes in Makefile.am and configure.ac (Mike
    Frysinger).
  Removed a useless test and fixed incorrect test in png_set_cHRM_fixed()
    (David Hill).

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
