
Libpng 1.2.19beta11 - May 28, 2007

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.19beta11.tar.gz
   libpng-1.2.19beta11.tar.bz2

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

   libpng-1.2.19beta11-no-config.tar.gz
   libpng-1.2.19beta11-no-config.tar.bz2

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

   lp1219b11.zip
   lp1219b11.tar.bz2

Project files

   libpng-1.2.19beta11-project-netware.zip
   libpng-1.2.19beta11-project-wince.zip

Other information:

   libpng-1.2.19beta11-README.txt
   libpng-1.2.19beta11-KNOWNBUGS.txt
   libpng-1.2.19beta11-LICENSE.txt
   libpng-1.2.19beta11-Y2K-compliance.txt

Changes since the last public release (1.2.18):

version 1.2.19beta1 [May 18, 2007]
  Changed "const static" to "static PNG_CONST" everywhere, mostly undoing
    change of libpng-1.2.17beta2.  Changed other "const" to "PNG_CONST"

version 1.2.19beta2 [May 18, 2007]
  Fixed png_do_expand() to only use the appropriate bits of tRNS value.

version 1.2.19beta3 [May 20, 2007]
  Add some "png_byte" typecasts in png_check_keyword().
  Write new_key instead of key in zTXt chunk.

version 1.2.19beta4 [May 21, 2007]
  Add png_snprintf() function and use it in place of sprint() for improved
    defense against buffer overflows.

version 1.2.19beta5 [May 21, 2007]
  Fixed png_handle_tRNS() to only use the appropriate bits of tRNS value.
  Changed handling of more unused parameters, to avoid compiler warnings.
  Removed some PNG_CONST in pngwutil.c to avoid compiler warnings.

version 1.2.19beta6 [May 22, 2007]
  Added some #ifdef PNG_MMX_CODE_SUPPORTED where needed in pngvcrd.c
  Added a special "_MSC_VER" case that defines png_snprintf to _snprintf

version 1.2.19beta7 [May 22, 2007]
  Squelched png_squelch_warnings() in pnggccrd.c and added an
    #ifdef PNG_MMX_CODE_SUPPORTED block around the declarations that caused
    the warnings that png_squelch_warnings was squelching.

version 1.2.19beta8 [May 22, 2007]
  Removed __MMX__ from test in pngconf.h.

version 1.2.19beta9 [May 23, 2007]
  Made png_squelch_warnings() available via PNG_SQUELCH_WARNINGS macro.
  Revised png_squelch_warnings() so it might work.
  Updated makefile.sgcc and makefile.solaris; added makefile.solaris-x86.

version 1.2.19beta10 [May 24, 2007]
  Resquelched png_squelch_warnings(), use "__attribute__((used))" instead.

version 1.2.19beta11 [May 28, 2007]
  Return 0 from png_get_sPLT() and png_get_unknown_chunks() if png_ptr is NULL;
    changed three remaining instances of png_strcpy() to png_strncpy() (David
    Hill).

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
