
Libpng 1.2.43rc02 - February 20, 2010

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.43rc02.tar.xz (LZMA-compressed, recommended)
   libpng-1.2.43rc02.tar.gz
   libpng-1.2.43rc02.tar.bz2

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

   libpng-1.2.43rc02-no-config.tar.xz (LZMA-compressed, recommended)
   libpng-1.2.43rc02-no-config.tar.gz
   libpng-1.2.43rc02-no-config.tar.bz2

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

   lp1243r02.zip
   lp1243r02.7z
   lp1243r02.tar.bz2

Project files

   libpng-1.2.43rc02-project-netware.zip
   libpng-1.2.43rc02-project-wince.zip

Other information:

   libpng-1.2.43rc02-README.txt
   libpng-1.2.43rc02-KNOWNBUGS.txt
   libpng-1.2.43rc02-LICENSE.txt
   libpng-1.2.43rc02-Y2K-compliance.txt
   libpng-1.2.43rc02-[previous version]-diff.txt

Changes since the last public release (1.2.42):

version 1.2.43beta01 [January 27, 2010]
  Updated CMakeLists.txt for consistent indentation and to avoid an
    unclosed if-statement warning (Philip Lowman).
  Removed "#ifdef PNG_1_0_X / #endif" surrounding
    PNG_READ_16_TO_8_SUPPORTED and PNG_READ_GRAY_TO_RGB_SUPPORTED
    in pngconf.h.  These were added in libpng-1.2.41beta08 and libpng-1.0.51,
    which introduced a binary incompatibility with libpng-1.0.50.
  Backported new png_decompress_chunk() algorithm from libpng-1.4.1

version 1.2.43beta02 [February 1, 2010]
  Backported two-pass png_decompress_chunk() algorithm from libpng-1.4.1

version 1.2.43beta03 [February 6, 2010]
  Backported fast png_push_save_buffer() algorithm from libpng-1.4.1

version 1.2.43beta04 [February 8, 2010]
  Reverted recent changes to png_push_save-buffer().
  Removed PNGAPI declaration of png_calloc() and png_write_sig() in
    1ibpng-1.2.X, introduced by mistake in libpng-1.2.41.
  Return allocated "old_buffer" in png_push_save_buffer() before png_error(),
    to avoid a potential memory leak.

version 1.2.43beta05 [February 8, 2010]
  Ported rewritten png_decompress_chunk() by John Bowler from libpng-1.4.1.

version 1.0.53rc01 and 1.2.43rc01 [February 20, 2010]
  No changes.

version 1.0.53rc02 and 1.2.43rc02 [February 20, 2010]
  Define _ALL_SOURCE in pngconf.h when building with AIX compiler.

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
