
Libpng 1.0.53 - February 25, 2010

This is a public release of libpng, intended for use in production codes.

Files available for download:

Source files with LF line endings (for Unix/Linux) and with a
"configure" script

   libpng-1.0.53.tar.xz (LZMA-compressed, recommended)
   libpng-1.0.53.tar.gz
   libpng-1.0.53.tar.bz2

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

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

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

   lpng1053.zip
   lpng1053.7z
   lpng1053.tar.bz2

Project files

   libpng-1.0.53-project-netware.zip
   libpng-1.0.53-project-wince.zip

Other information:

   libpng-1.0.53-README.txt
   libpng-1.0.53-KNOWNBUGS.txt
   libpng-1.0.53-LICENSE.txt
   libpng-1.0.53-Y2K-compliance.txt

Changes since the last public release (1.0.52):

version 1.0.53 [February 25, 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 two-pass png_decompress_chunk() algorithm from libpng-1.4.1
  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.
  Ported rewritten png_decompress_chunk() by John Bowler from libpng-1.4.1.
  Define _ALL_SOURCE in configure.ac, makefile.aix, and CMakeLists.txt
    when using AIX compiler.
  Removed unused gzio.c from contrib/pngminim gather and makefile scripts

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
