
Libpng 1.2.41beta09 - November 1, 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.41beta09.tar.xz (LZMA-compressed, recommended)
   libpng-1.2.41beta09.tar.gz
   libpng-1.2.41beta09.tar.bz2

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

   libpng-1.2.41beta09-no-config.tar.xz (LZMA-compressed, recommended)
   libpng-1.2.41beta09-no-config.tar.gz
   libpng-1.2.41beta09-no-config.tar.bz2

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

   lp1241b09.zip
   lp1241b09.7z
   lp1241b09.tar.bz2

Project files

   libpng-1.2.41beta09-project-netware.zip
   libpng-1.2.41beta09-project-wince.zip

Other information:

   libpng-1.2.41beta09-README.txt
   libpng-1.2.41beta09-KNOWNBUGS.txt
   libpng-1.2.41beta09-LICENSE.txt
   libpng-1.2.41beta09-Y2K-compliance.txt
   libpng-1.2.41beta09-[previous version]-diff.txt

Changes since the last public release (1.2.40):

version 1.2.41beta01 [September 25, 2009]
  Moved redundant IHDR checking into new png_check_IHDR() in png.c
    and report all errors found in the IHDR data.
  Eliminated useless call to png_check_cHRM() from pngset.c
  Expanded TAB characters in pngrtran.c

version 1.2.41beta02 [September 30, 2009]
  Revised png_check_IHDR().

version 1.2.41beta03 [October 1, 2009]
  Revised png_check_IHDR() again, to check info_ptr members instead of
    the contents of the returned parameters.

version 1.2.41beta04 [October 7, 2009]
  Added "xcode" project similar one already in libpng-1.4.0beta (Alam Arias).
  Ported some cosmetic changes from libpng-1.4.0beta86.
  Eliminated a shadowed declaration of "pp" in png_handle_sPLT().

version 1.2.41beta05 [October 17, 2009]
  Revised pngconf.h to make it easier to enable iTXt support.  From libpng
    version 1.2.9 through 1.2.40, defining PNG_iTXt_SUPPORTED did not work
    as expected.
  Ported some cosmetic changes from libpng-1.4.0beta87, changing
    many "#if defined(x)" to "#ifdef x".

version 1.2.41beta06 [October 18, 2009]
  Restored PNG_USE_LOCAL_ARRAYS code in pngread.c that was inadvertently
    deleted in libpng-1.2.41beta05.
  Converted all PNG_NO_* tests to PNG_*_SUPPORTED everywhere except pngconf.h
    as in libpng-1.4.0beta78 and later.

version 1.2.41beta07 [October 21, 2009]
  Ported some cosmetic changes from libpng-1.4.0rc01, changing
    many "#if defined(x)" to "#ifdef x" in png.h and pngconf.h.

version 1.2.41beta08 [October 30, 2009]
  Ported from libpng-1.4.0rc01: png_calloc(), png_get_io_chunk_name(),
    png_get_io_state(), png_set_user_cache_max(), png_get_user_cache_max(),
    png_set_premultiply_alpha, and png_do_read_premultiply_alpha().
  Relocated png_do_chop() ahead of building gamma tables in pngrtran.c
    This avoids building 16-bit gamma tables unnecessarily.

version 1.2.41beta09 [November 1, 2009]
  Removed a harmless extra png_set_invert_alpha() from pngwrite.c
  More bugfixes and improvements to CMakeLists.txt (Philip Lowman)
  Moved CMakeLists.txt from scripts into the main libpng directory.
  Apply png_user_chunk_cache_max within png_decompress_chunk().
  Merged libpng-1.2.41.txt with libpng-1.4.0.txt where appropriate.

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
