
Libpng 1.4.5beta07 - November 25, 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.5beta07.tar.xz (LZMA-compressed, recommended)
   1.4.5beta07.tar.gz
   1.4.5beta07.tar.bz2

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

   lp145b07.zip
   lp145b07.7z

Other information:

   1.4.5beta07-README.txt
   1.4.5beta07-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 25, 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'.

version 1.4.5beta07 [November 25, 2010]
  Reverted png_get_uint_16 macro to beta05 and added comment about the
    potential API incompatibility.

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
