
Libpng 1.0.38rc08 - August 3, 2008

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.0.38rc08.tar.gz
   libpng-1.0.38rc08.tar.lzma
     (Get the lzma codec from <http://tukaani.org/lzma>).
   libpng-1.0.38rc08.tar.bz2

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

   libpng-1.0.38rc08-no-config.tar.gz
   libpng-1.0.38rc08-no-config.tar.lzma
   libpng-1.0.38rc08-no-config.tar.bz2

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

   lp1038r08.zip
   lp1038r08.7z
   lp1038r08.tar.bz2

Project files

   libpng-1.0.38rc08-project-netware.zip
   libpng-1.0.38rc08-project-wince.zip

Other information:

   libpng-1.0.38rc08-README.txt
   libpng-1.0.38rc08-KNOWNBUGS.txt
   libpng-1.0.38rc08-LICENSE.txt
   libpng-1.0.38rc08-Y2K-compliance.txt
   libpng-1.0.38rc08-[previous version]-diff.txt

Changes since the last public release (1.0.37):

version 1.2.29beta01 [May 1, 2008]
  Removed some stray *.diff and *.orig files

version 1.2.29beta02 [May 1, 2008]
  Reverted Makefile.in, aclocal.m4, and configure to the libpng-1.2.26
    versions.

version 1.2.29beta03 [May 2, 2008]
  Added --force to autogen libtoolize options and --force-missing to
    automake options.
  Changed $(ECHO) to echo in Makefile.am and Makefile.in
  Updated all configure files to autoconf-2.62
  #ifdef out pnggcrd.c code if using MSC_VER

version 1.2.29rc01 [May 4, 2008]
  No changes.

version 1.0.35 and 1.2.29 [May 8, 2008]
  No changes.

version 1.0.37 [May 9, 2008]
  Updated Makefile.in and configure (omitted version 1.0.36).

version 1.2.30beta01 [May 29, 2008]
  Updated libpng.pc-configure.in and libpng-config.in per debian bug reports.

version 1.2.30beta02 [June 25, 2008]
  Restored png_flush(png_ptr) at the end of png_write_end(), that was
    removed from libpng-1.0.9beta03.

version 1.2.30beta03 [July 6, 2008]
  Merged some cosmetic whitespace changes from libpng-1.4.0beta19.
  Inline call of png_get_uint_32() in png_get_uint_31(), as in 1.4.0beta19.
  Added demo of decoding vpAg and sTER chunks to pngtest.c, from 1.4.0beta19.
  Changed PNGMAJ from 0 to 12 in makefile.darwin, which does not like 0.
  Added new private function png_read_chunk_header() from 1.4.0beta19.
  Merge reading of chunk length and chunk type into a single 8-byte read.
  Merge writing of chunk length and chunk type into a single 8-byte write.

version 1.2.30beta04 [July 10, 2008]
  Merged more cosmetic whitespace changes from libpng-1.4.0beta19.

version 1.0.38rc01, 1.2.30rc01 [August 3, 2008]
  No changes.

version 1.0.38rc02, 1.2.30rc02 [July 21, 2008]
  Moved local array "chunkdata" from pngrutil.c to the png_struct, so
    it will be freed by png_read_destroy() in case of a read error (Kurt
    Christensen).

version 1.0.38rc03, 1.2.30rc03 [July 21, 2008]
  Change "purpose" and "buffer" to png_ptr->chunkdata to avoid memory leaking.

version 1.0.38rc04, 1.2.30rc04 [July 22, 2008]
  Change "chunkdata = NULL" to "png_ptr->chunkdata = NULL" several places in
    png_decompress_chunk().

version 1.0.38rc05, 1.2.30rc05 [July 25, 2008]
  Changed all remaining "chunkdata" to "png_ptr->chunkdata" in
    png_decompress_chunk() and remove chunkdata from parameter list.
  Put a call to png_check_chunk_name() in png_read_chunk_header().
  Revised png_check_chunk_name() to reject a name with a lowercase 3rd byte.
  Removed two calls to png_check_chunk_name() occuring later in the process.

version 1.0.38rc06, 1.2.30rc06 [July 29, 2008]
  Added a call to png_check_chunk_name() in pngpread.c
  Reverted png_check_chunk_name() to accept a name with a lowercase 3rd byte.

version 1.0.38r07, 1.2.30r07 [August 2, 2008]
  Relocated a misplaced "#endif /* PNG_NO_WRITE_FILTER */" in pngwutil.c
  Changed "-Wall" to "-W -Wall" in the CFLAGS in all makefiles (Cosmin Truta)
  Declared png_ptr "volatile" in pngread.c and pngwrite.c to avoid warnings.
  Added code in pngset.c to quiet compiler warnings.
  Updated contrib/visupng/cexcept.h to version 2.0.1

version 1.0.38r08, 1.2.30r08 [August 3, 2008]
  Enclose "volatile" declarations in #ifdef PNG_SETJMP_SUPPORTED (Cosmin).

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
