
Libpng 1.4.5rc02 - November 21, 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

   1.4.5rc02.tar.xz (LZMA-compressed, recommended)
   1.4.5rc02.tar.gz
   1.4.5rc02.tar.bz2

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

   lp145r02.zip
   lp145r02.7z

Other information:

   1.4.5rc02-README.txt
   1.4.5rc02-LICENSE.txt

Changes since the last public release (1.4.4):

version 1.4.5beta01 [September 25, 2010]
  Fixed possible configure.ac bug introduced in version 1.4.4rc05.
  Rebuilt configure scripts with autoconf-2.68 instead of autoconf-2.65

version 1.4.5beta02 [October 5, 2010]
  Reverted configure scripts to autoconf-2.65
  Fixed problem with symbols creation in Makefile.am which was assuming that
    all versions of cpp write to standard output by default (Martin Banky). The
    bug was introduced in libpng-1.2.9beta5.

version 1.4.5beta03 [October 8, 2010]
  Wrapped long lines in CMakeLists.txt and introduced ${libpng_public_hdrs}
  Undid Makefile.am revision of 1.4.5beta02.

version 1.4.5beta04 [November 8, 2010]
  Check for out-of-range text compression mode in png_set_text().

version 1.4.5rc01 [November 19, 2010]
  No changes.

version 1.4.5beta05 [November 21, 2010]
  Removed some extraneous parentheses that appeared in pngrutil.c of
    libpng-1.4.3beta01
  Revised png_get_uint_32, png_get_int_32, png_get_uint_16 (Cosmin)
  Moved reading of file signature into png_read_sig (Cosmin)
  Fixed atomicity of chunk header serialization (Cosmin)
  Added test for io_state in pngtest.c (Cosmin)
  Added "#!/bin/sh" at the top of contrib/pngminim/*/gather.sh scripts.

version 1.4.5beta06 [November 21, 2010]
  Restored the parentheses in pngrutil.c; they are needed when the
    png_get_*int_*() functions are compiled (i.e., when PNG_USE_READ_MACROS
    is not defined).
  Make the "png_get_uint_16" macro return a png_uint_32 in libpng-1.4 for API
    compatibility.
  Changes to remove gcc warnings (John Bowler)
    Certain optional gcc warning flags resulted in warnings in libpng code.
    With these changes only -Wconversion and -Wcast-qual cannot be turned on.
    Changes are trivial rearrangements of code.  -Wconversion is not possible
    for pngrutil.c (because of the widespread use of += et al on variables
    smaller than (int) or (unsigned int)) and -Wcast-qual is not possible
    with pngwio.c and pngwutil.c because the 'write' callback and zlib
    compression both fail to declare their input buffers with 'const'.

Send comments/corrections/commendations to glennrp at users.sourceforge.net
or to png-mng-implement at lists.sf.net (subscription required; visit
https://lists.sourceforge.net/lists/listinfo/png-mng-implement).

Glenn R-P
