From 6dae6d8f3b9bffed81832d144a59afabb782c250 Mon Sep 17 00:00:00 2001 From: Glenn Randers-Pehrson Date: Sun, 25 Nov 2012 12:40:13 -0600 Subject: [PATCH] [libpng16] Imported from libpng-1.6.0beta32.tar --- ANNOUNCE | 4 ++-- CHANGES | 2 +- LICENSE | 4 ++-- README | 2 +- libpng-manual.txt | 37 ++++++++++++++++++++++------ libpng.3 | 45 ++++++++++++++++++++++++++--------- libpngpf.3 | 2 +- png.5 | 2 +- png.c | 4 ++-- png.h | 10 ++++---- pngconf.h | 2 +- pngset.c | 9 ++++++- projects/vstudio/readme.txt | 2 +- projects/vstudio/zlib.props | 2 +- scripts/README.txt | 2 +- scripts/pnglibconf.h.prebuilt | 2 +- 16 files changed, 92 insertions(+), 39 deletions(-) diff --git a/ANNOUNCE b/ANNOUNCE index a54736a85..f23f5718b 100644 --- a/ANNOUNCE +++ b/ANNOUNCE @@ -1,5 +1,5 @@ -Libpng 1.6.0beta32 - November 22, 2012 +Libpng 1.6.0beta32 - November 25, 2012 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. @@ -545,7 +545,7 @@ Version 1.6.0beta31 [November 1, 2012] gain; implementing full ICC color correction may be desireable but is left up to applications. -Version 1.6.0beta32 [November 22, 2012] +Version 1.6.0beta32 [November 25, 2012] Fixed an intermittent SEGV in pngstest due to an uninitialized array element. Added the ability for contrib/libtests/makepng.c to make a PNG with just one color. This is useful for debugging pngstest color inaccuracy reports. diff --git a/CHANGES b/CHANGES index 246610f30..ab8596e4f 100644 --- a/CHANGES +++ b/CHANGES @@ -4297,7 +4297,7 @@ Version 1.6.0beta31 [November 1, 2012] gain; implementing full ICC color correction may be desireable but is left up to applications. -Version 1.6.0beta32 [November 22, 2012] +Version 1.6.0beta32 [November 25, 2012] Fixed an intermittent SEGV in pngstest due to an uninitialized array element. Added the ability for contrib/libtests/makepng.c to make a PNG with just one color. This is useful for debugging pngstest color inaccuracy reports. diff --git a/LICENSE b/LICENSE index 6c8267bd5..e16505424 100644 --- a/LICENSE +++ b/LICENSE @@ -10,7 +10,7 @@ this sentence. This code is released under the libpng license. -libpng versions 1.2.6, August 15, 2004, through 1.6.0beta32, November 1, 2012, are +libpng versions 1.2.6, August 15, 2004, through 1.6.0beta32, November 25, 2012, are Copyright (c) 2004, 2006-2012 Glenn Randers-Pehrson, and are distributed according to the same disclaimer and license as libpng-1.2.5 with the following individual added to the list of Contributing Authors @@ -108,4 +108,4 @@ certification mark of the Open Source Initiative. Glenn Randers-Pehrson glennrp at users.sourceforge.net -November 1, 2012 +November 25, 2012 diff --git a/README b/README index 5560daf40..7ea2571fc 100644 --- a/README +++ b/README @@ -1,4 +1,4 @@ -README for libpng version 1.6.0beta32 - November 1, 2012 (shared library 16.0) +README for libpng version 1.6.0beta32 - November 25, 2012 (shared library 16.0) See the note about version numbers near the top of png.h See INSTALL for instructions on how to install libpng. diff --git a/libpng-manual.txt b/libpng-manual.txt index 50fa05822..0226fb269 100644 --- a/libpng-manual.txt +++ b/libpng-manual.txt @@ -1,6 +1,6 @@ libpng-manual.txt - A description on how to use and modify libpng - libpng version 1.6.0beta32 - November 1, 2012 + libpng version 1.6.0beta32 - November 25, 2012 Updated and distributed by Glenn Randers-Pehrson Copyright (c) 1998-2011 Glenn Randers-Pehrson @@ -11,7 +11,7 @@ libpng-manual.txt - A description on how to use and modify libpng Based on: - libpng versions 0.97, January 1998, through 1.6.0beta32 - November 1, 2012 + libpng versions 0.97, January 1998, through 1.6.0beta32 - November 25, 2012 Updated and distributed by Glenn Randers-Pehrson Copyright (c) 1998-2011 Glenn Randers-Pehrson @@ -2567,6 +2567,20 @@ You can #define PNG_ABORT() to a function that does something more useful than abort(), as long as your function does not return. +Checking for invalid palette index on write was added at libpng +1.5.10. If a pixel contains an invalid (out-of-range) index libpng issues +a benign error. This is enabled by default because this condition is an +error according to the PNG specification, Clause 11.3.2, but the error can +be ignored in each png_ptr with + + png_set_check_for_invalid_index(png_ptr, 0); + +If the error is ignored, or if png_benign_error() treats it as a warning, +any invalid pixels are written as-is by the encoder, resulting in an +invalid PNG datastream as output. In this case the application is +responsible for ensuring that the pixel indexes are in range when it writes +a PLTE chunk with fewer entries than the bit depth would allow. + Now you need to set up the output code. The default for libpng is to use the C function fwrite(). If you use this, you will need to pass a valid FILE * in the function png_init_io(). Be sure that the file is @@ -3534,7 +3548,7 @@ need to write. The "png_image" structure contains the following members: png_uint_32 warning_or_error; char message[64]; -In the event of an error or warning the following field wrning_or_error +In the event of an error or warning the following field warning_or_error field will be set to a non-zero value and the 'message' field will contain a '\0' terminated string with the libpng error or warning message. If both warnings and an error were encountered, only the error is recorded. If there @@ -4562,13 +4576,22 @@ function) incorrectly returned a value of type png_uint_32. Checking for invalid palette index on read or write was added at libpng 1.5.10. When an invalid index is found, libpng issues a benign error. -This is enabled by default but can be disabled in each png_ptr with +This is enabled by default because this condition is an error according +to the PNG specification, Clause 11.3.2, but the error can be ignored in +each png_ptr with png_set_check_for_invalid_index(png_ptr, allowed); allowed - one of - 0: disable - 1: enable + 0: disable benign error (accept the + invalid data without warning). + 1: enable benign error (treat the + invalid data as an error or a + warning). + +If the error is ignored, or if png_benign_error() treats it as a warning, +any invalid pixels are decoded as opaque black by the decoder and written +as-is by the encoder. A. Changes that affect users of libpng @@ -5064,7 +5087,7 @@ Other rules can be inferred by inspecting the libpng source. XVI. Y2K Compliance in libpng -November 1, 2012 +November 25, 2012 Since the PNG Development group is an ad-hoc body, we can't make an official declaration. diff --git a/libpng.3 b/libpng.3 index ec91aacac..3b3833a9b 100644 --- a/libpng.3 +++ b/libpng.3 @@ -1,4 +1,4 @@ -.TH LIBPNG 3 "November 1, 2012" +.TH LIBPNG 3 "November 25, 2012" .SH NAME libpng \- Portable Network Graphics (PNG) Reference Library 1.6.0beta32 .SH SYNOPSIS @@ -997,7 +997,7 @@ Following is a copy of the libpng-manual.txt file that accompanies libpng. .SH LIBPNG.TXT libpng-manual.txt - A description on how to use and modify libpng - libpng version 1.6.0beta32 - November 1, 2012 + libpng version 1.6.0beta32 - November 25, 2012 Updated and distributed by Glenn Randers-Pehrson Copyright (c) 1998-2011 Glenn Randers-Pehrson @@ -1008,7 +1008,7 @@ libpng-manual.txt - A description on how to use and modify libpng Based on: - libpng versions 0.97, January 1998, through 1.6.0beta32 - November 1, 2012 + libpng versions 0.97, January 1998, through 1.6.0beta32 - November 25, 2012 Updated and distributed by Glenn Randers-Pehrson Copyright (c) 1998-2011 Glenn Randers-Pehrson @@ -3564,6 +3564,20 @@ You can #define PNG_ABORT() to a function that does something more useful than abort(), as long as your function does not return. +Checking for invalid palette index on write was added at libpng +1.5.10. If a pixel contains an invalid (out-of-range) index libpng issues +a benign error. This is enabled by default because this condition is an +error according to the PNG specification, Clause 11.3.2, but the error can +be ignored in each png_ptr with + + png_set_check_for_invalid_index(png_ptr, 0); + +If the error is ignored, or if png_benign_error() treats it as a warning, +any invalid pixels are written as-is by the encoder, resulting in an +invalid PNG datastream as output. In this case the application is +responsible for ensuring that the pixel indexes are in range when it writes +a PLTE chunk with fewer entries than the bit depth would allow. + Now you need to set up the output code. The default for libpng is to use the C function fwrite(). If you use this, you will need to pass a valid FILE * in the function png_init_io(). Be sure that the file is @@ -4531,7 +4545,7 @@ need to write. The "png_image" structure contains the following members: png_uint_32 warning_or_error; char message[64]; -In the event of an error or warning the following field wrning_or_error +In the event of an error or warning the following field warning_or_error field will be set to a non-zero value and the 'message' field will contain a '\0' terminated string with the libpng error or warning message. If both warnings and an error were encountered, only the error is recorded. If there @@ -5560,13 +5574,22 @@ function) incorrectly returned a value of type png_uint_32. Checking for invalid palette index on read or write was added at libpng 1.5.10. When an invalid index is found, libpng issues a benign error. -This is enabled by default but can be disabled in each png_ptr with +This is enabled by default because this condition is an error according +to the PNG specification, Clause 11.3.2, but the error can be ignored in +each png_ptr with png_set_check_for_invalid_index(png_ptr, allowed); allowed - one of - 0: disable - 1: enable + 0: disable benign error (accept the + invalid data without warning). + 1: enable benign error (treat the + invalid data as an error or a + warning). + +If the error is ignored, or if png_benign_error() treats it as a warning, +any invalid pixels are decoded as opaque black by the decoder and written +as-is by the encoder. A. Changes that affect users of libpng @@ -6062,7 +6085,7 @@ Other rules can be inferred by inspecting the libpng source. .SH XVI. Y2K Compliance in libpng -November 1, 2012 +November 25, 2012 Since the PNG Development group is an ad-hoc body, we can't make an official declaration. @@ -6330,7 +6353,7 @@ possible without all of you. Thanks to Frank J. T. Wojcik for helping with the documentation. -Libpng version 1.6.0beta32 - November 1, 2012: +Libpng version 1.6.0beta32 - November 25, 2012: Initially created in 1995 by Guy Eric Schalnat, then of Group 42, Inc. Currently maintained by Glenn Randers-Pehrson (glennrp at users.sourceforge.net). @@ -6353,7 +6376,7 @@ this sentence. This code is released under the libpng license. -libpng versions 1.2.6, August 15, 2004, through 1.6.0beta32, November 1, 2012, are +libpng versions 1.2.6, August 15, 2004, through 1.6.0beta32, November 25, 2012, are Copyright (c) 2004,2006-2007 Glenn Randers-Pehrson, and are distributed according to the same disclaimer and license as libpng-1.2.5 with the following individual added to the list of Contributing Authors @@ -6452,7 +6475,7 @@ certification mark of the Open Source Initiative. Glenn Randers-Pehrson glennrp at users.sourceforge.net -November 1, 2012 +November 25, 2012 .\" end of man page diff --git a/libpngpf.3 b/libpngpf.3 index bdadf21cb..d5ae1c3af 100644 --- a/libpngpf.3 +++ b/libpngpf.3 @@ -1,4 +1,4 @@ -.TH LIBPNGPF 3 "November 1, 2012" +.TH LIBPNGPF 3 "November 25, 2012" .SH NAME libpng \- Portable Network Graphics (PNG) Reference Library 1.6.0beta32 (private functions) diff --git a/png.5 b/png.5 index c3b6b22b9..b17672d8b 100644 --- a/png.5 +++ b/png.5 @@ -1,4 +1,4 @@ -.TH PNG 5 "November 1, 2012" +.TH PNG 5 "November 25, 2012" .SH NAME png \- Portable Network Graphics (PNG) format .SH DESCRIPTION diff --git a/png.c b/png.c index 20484aafd..c2c231fb7 100644 --- a/png.c +++ b/png.c @@ -768,13 +768,13 @@ png_get_copyright(png_const_structrp png_ptr) #else # ifdef __STDC__ return PNG_STRING_NEWLINE \ - "libpng version 1.6.0beta32 - November 22, 2012" PNG_STRING_NEWLINE \ + "libpng version 1.6.0beta32 - November 25, 2012" PNG_STRING_NEWLINE \ "Copyright (c) 1998-2012 Glenn Randers-Pehrson" PNG_STRING_NEWLINE \ "Copyright (c) 1996-1997 Andreas Dilger" PNG_STRING_NEWLINE \ "Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc." \ PNG_STRING_NEWLINE; # else - return "libpng version 1.6.0beta32 - November 22, 2012\ + return "libpng version 1.6.0beta32 - November 25, 2012\ Copyright (c) 1998-2012 Glenn Randers-Pehrson\ Copyright (c) 1996-1997 Andreas Dilger\ Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc."; diff --git a/png.h b/png.h index 44df57231..06a29e218 100644 --- a/png.h +++ b/png.h @@ -1,7 +1,7 @@ /* png.h - header file for PNG reference library * - * libpng version 1.6.0beta32 - November 1, 2012 + * libpng version 1.6.0beta32 - November 25, 2012 * Copyright (c) 1998-2012 Glenn Randers-Pehrson * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) @@ -11,7 +11,7 @@ * Authors and maintainers: * libpng versions 0.71, May 1995, through 0.88, January 1996: Guy Schalnat * libpng versions 0.89c, June 1996, through 0.96, May 1997: Andreas Dilger - * libpng versions 0.97, January 1998, through 1.6.0beta32 - November 1, 2012: Glenn + * libpng versions 0.97, January 1998, through 1.6.0beta32 - November 25, 2012: Glenn * See also "Contributing Authors", below. * * Note about libpng version numbers: @@ -198,7 +198,7 @@ * * This code is released under the libpng license. * - * libpng versions 1.2.6, August 15, 2004, through 1.6.0beta32, November 1, 2012, are + * libpng versions 1.2.6, August 15, 2004, through 1.6.0beta32, November 25, 2012, are * Copyright (c) 2004, 2006-2012 Glenn Randers-Pehrson, and are * distributed according to the same disclaimer and license as libpng-1.2.5 * with the following individual added to the list of Contributing Authors: @@ -310,7 +310,7 @@ * Y2K compliance in libpng: * ========================= * - * November 1, 2012 + * November 25, 2012 * * Since the PNG Development group is an ad-hoc body, we can't make * an official declaration. @@ -378,7 +378,7 @@ /* Version information for png.h - this should match the version in png.c */ #define PNG_LIBPNG_VER_STRING "1.6.0beta32" #define PNG_HEADER_VERSION_STRING \ - " libpng version 1.6.0beta32 - November 1, 2012\n" + " libpng version 1.6.0beta32 - November 25, 2012\n" #define PNG_LIBPNG_VER_SONUM 16 #define PNG_LIBPNG_VER_DLLNUM 16 diff --git a/pngconf.h b/pngconf.h index d0c52dee1..b17989cb0 100644 --- a/pngconf.h +++ b/pngconf.h @@ -1,7 +1,7 @@ /* pngconf.h - machine configurable file for libpng * - * libpng version 1.6.0beta32 - November 1, 2012 + * libpng version 1.6.0beta32 - November 25, 2012 * * Copyright (c) 1998-2012 Glenn Randers-Pehrson * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) diff --git a/pngset.c b/pngset.c index 85a1c14bc..c57dcef79 100644 --- a/pngset.c +++ b/pngset.c @@ -1536,7 +1536,14 @@ png_set_benign_errors(png_structrp png_ptr, int allowed) #endif /* PNG_BENIGN_ERRORS_SUPPORTED */ #ifdef PNG_CHECK_FOR_INVALID_INDEX_SUPPORTED - /* Do not report invalid palette index; added at libng-1.5.10 */ + /* Whether to report invalid palette index; added at libng-1.5.10. + * It is possible for an indexed (color-type==3) PNG file to contain + * pixels with invalid (out-of-range) indexes if the PLTE chunk has + * fewer entries than the image's bit-depth would allow. We recover + * from this gracefully by filling any incomplete palette with zeroes + * (opaque black). By default, when this occurs libpng will issue + * a benign error. This API can be used to override that behavior. + */ void PNGAPI png_set_check_for_invalid_index(png_structrp png_ptr, int allowed) { diff --git a/projects/vstudio/readme.txt b/projects/vstudio/readme.txt index af737f9f9..dbe3d6f8e 100644 --- a/projects/vstudio/readme.txt +++ b/projects/vstudio/readme.txt @@ -1,7 +1,7 @@ VisualStudio instructions -libpng version 1.6.0beta32 - November 1, 2012 +libpng version 1.6.0beta32 - November 25, 2012 Copyright (c) 1998-2010 Glenn Randers-Pehrson diff --git a/projects/vstudio/zlib.props b/projects/vstudio/zlib.props index fb6556d22..bf5d04983 100644 --- a/projects/vstudio/zlib.props +++ b/projects/vstudio/zlib.props @@ -2,7 +2,7 @@