diff --git a/ANNOUNCE b/ANNOUNCE index 07d5bcc27aa140eacd980e8e48a9381be275c448..5557ad28569bd2cb09c216ab4ce74f5f36e1b335 100644 --- a/ANNOUNCE +++ b/ANNOUNCE @@ -1,5 +1,5 @@ -Libpng 1.6.3 - July 18, 2013 +Libpng 1.6.4 - September 12, 2013 This is a public release of libpng, intended for use in production codes. @@ -8,106 +8,28 @@ Files available for download: Source files with LF line endings (for Unix/Linux) and with a "configure" script - libpng-1.6.3.tar.xz (LZMA-compressed, recommended) - libpng-1.6.3.tar.gz + libpng-1.6.4.tar.xz (LZMA-compressed, recommended) + libpng-1.6.4.tar.gz Source files with CRLF line endings (for Windows), without the "configure" script - lpng163.7z (LZMA-compressed, recommended) - lpng163.zip + lpng164.7z (LZMA-compressed, recommended) + lpng164.zip Other information: - libpng-1.6.3-README.txt - libpng-1.6.3-LICENSE.txt - -Changes since the last public release (1.6.2): - - Revised stack marking in arm/filter_neon.S and configure.ac. - Ensure that NEON filter stuff is completely disabled when switched 'off'. - Previously the ARM NEON specific files were still built if the option - was switched 'off' as opposed to being explicitly disabled. - Test for 'arm*' not just 'arm' in the host_cpu configure variable. - Rebuilt the configure scripts. - Expanded manual paragraph about writing private chunks, particularly - the need to call png_set_keep_unknown_chunks() when writing them. - Avoid dereferencing NULL pointer possibly returned from - png_create_write_struct() (Andrew Church). - Calculate our own zlib windowBits when decoding rather than trusting the - CMF bytes in the PNG datastream. - Added an option to force maximum window size for inflating, which was - the behavior of libpng15 and earlier. - Added png-fix-itxt and png-fix-too-far-back to the built programs and - removed warnings from the source code and timepng that are revealed as - a result. - Detect wrong libpng versions linked to png-fix-too-far-back, which currently - only works with libpng versions that can be made to reliably fail when - the deflate data contains an out-of-window reference. This means only - 1.6 and later. - Fixed gnu issues: g++ needs a static_cast, gcc 4.4.7 has a broken warning - message which it is easier to work round than ignore. - Updated contrib/pngminus/pnm2png.c (Paul Stewart): - Check for EOF - Ignore "#" delimited comments in input file to pnm2png.c. - Fixed whitespace handling - Added a call to png_set_packing() - Initialize dimension values so if sscanf fails at least we have known - invalid values. - Attempt to detect configuration issues with png-fix-too-far-back, which - requires both the correct libpng and the correct zlib to function - correctly. - Check ZLIB_VERNUM for mismatches, enclose #error in quotes - Added information in the documentation about problems with and fixes for - the bad CRC and bad iTXt chunk situations. - Allow contrib/pngminus/pnm2png.c to compile without WRITE_INVERT and - WRITE_PACK supported (writes error message that it can't read P1 or - Improved png-fix-too-far-back usage message, added --suffix option. - Revised contrib/pngminim/*/makefile to generate pnglibconf.h with the - right zlib header files. - Separated CPPFLAGS and CFLAGS in contrib/pngminim/*/makefile - Removed a redundant test in png_set_IHDR(). - Added set(CMAKE_CONFIGURATION_TYPES ...) to CMakeLists.txt (Andrew Hundt) - Deleted set(CMAKE_BUILD_TYPE) block from CMakeLists.txt - Enclose the prototypes for the simplified write API in - #ifdef PNG_STDIO_SUPPORTED/#endif - Make ARM NEON support work at compile time (not just configure time). - This moves the test on __ARM_NEON__ into pngconf.h to avoid issues when - using a compiler that compiles for multiple architectures at one time. - Removed PNG_FILTER_OPTIMIZATIONS and PNG_ARM_NEON_SUPPORTED from - pnglibconf.h, allowing more of the decisions to be made internally - (pngpriv.h) during the compile. Without this, symbol prefixing is broken - under certain circumstances on ARM platforms. Now only the API parts of - the optimizations ('check' vs 'api') are exposed in the public header files - except that the new setting PNG_ARM_NEON_OPT documents how libpng makes the - decision about whether or not to use the optimizations. - Protect symbol prefixing against CC/CPPFLAGS/CFLAGS useage. - Previous iOS/Xcode fixes for the ARM NEON optimizations moved the test - on __ARM_NEON__ from configure time to compile time. This breaks symbol - prefixing because the definition of the special png_init_filter_functions - call was hidden at configure time if the relevant compiler arguments are - passed in CFLAGS as opposed to CC. This change attempts to avoid all - the confusion that would result by declaring the init function even when - it is not used, so that it will always get prefixed. - Revised libpng.3 so that "doclifter" can process it. - Revised example.c to illustrate use of PNG_DEFAULT_sRGB and PNG_GAMMA_MAC_18 - as parameters for png_set_gamma(). These have been available since - libpng-1.5.4. - Renamed contrib/tools/png-fix-too-far-back.c to pngfix.c and revised it - to check all compressed chunks known to libpng. - Updated documentation to show default behavior of benign errors correctly. - Only compile ARM code when PNG_READ_SUPPORTED is defined. - Fixed undefined behavior in contrib/tools/pngfix.c and added new strip - option. pngfix relied on undefined behavior and even a simple change from - gcc to g++ caused it to fail. The new strip option 'unsafe' has been - implemented and is the default if --max is given. Option names have - been clarified, with --strip=transform now stripping the bKGD chunk, - which was stripped previously with --strip=unused. - Added all documented chunk types to pngpriv.h - Unified pngfix.c source with libpng17. - Revised manual about changes in iTXt chunk handling made in libpng-1.6.0. - Added "/* SAFE */" comments in pngrutil.c and pngrtran.c where warnings - may be erroneously issued by code-checking applications. + libpng-1.6.4-README.txt + libpng-1.6.4-LICENSE.txt + Gnupg/*.asc (PGP armored detached signatures) + +Changes since the last public release (1.6.3): + Added information about png_set_options() to the manual. + Delay calling png_init_filter_functions() until a row with nonzero filter + is found. + Fixed inconsistent conditional compilation of png_chunk_unknown_handling() + prototype, definition, and usage. Made it depend on + PNG_HANDLE_AS_UNKNOWN_SUPPORTED everywhere. Send comments/corrections/commendations to png-mng-implement at lists.sf.net (subscription required; visit diff --git a/CHANGES b/CHANGES index fba37a781388debb87002d3e6a19299507f713c1..e8ec99804f225494cb20813a6def2b8cc2ea1282 100644 --- a/CHANGES +++ b/CHANGES @@ -4618,6 +4618,22 @@ Version 1.6.3 [July 18, 2013] Added "/* SAFE */" comments in pngrutil.c and pngrtran.c where warnings may be erroneously issued by code-checking applications. +Version 1.6.4beta01 [August 21, 2013] + Added information about png_set_options() to the manual. + Delay calling png_init_filter_functions() until a row with nonzero filter + is found. + +Version 1.6.4beta02 [August 30, 2013] + Fixed inconsistent conditional compilation of png_chunk_unknown_handling() + prototype, definition, and usage. Made it depend on + PNG_HANDLE_AS_UNKNOWN_SUPPORTED everywhere. + +Version 1.6.4rc01 [September 5, 2013] + No changes. + +Version 1.6.4 [September 12, 2013] + No changes. + Send comments/corrections/commendations to png-mng-implement at lists.sf.net (subscription required; visit https://lists.sourceforge.net/lists/listinfo/png-mng-implement diff --git a/CMakeLists.txt b/CMakeLists.txt index 0a1c459a2ef9bb2512e8f4b3aa363b609c993a65..5e90a30797f66321d54e844b9645a7f4fcbd8368 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -16,7 +16,7 @@ enable_testing() set(PNGLIB_MAJOR 1) set(PNGLIB_MINOR 6) -set(PNGLIB_RELEASE 3) +set(PNGLIB_RELEASE 4) set(PNGLIB_NAME libpng${PNGLIB_MAJOR}${PNGLIB_MINOR}) set(PNGLIB_VERSION ${PNGLIB_MAJOR}.${PNGLIB_MINOR}.${PNGLIB_RELEASE}) @@ -252,7 +252,7 @@ endif(NOT WIN32 OR CYGWIN OR MINGW) # SET UP LINKS if(PNG_SHARED) set_target_properties(${PNG_LIB_NAME} PROPERTIES -# VERSION 16.${PNGLIB_RELEASE}.1.6.3 +# VERSION 16.${PNGLIB_RELEASE}.1.6.4 VERSION 16.${PNGLIB_RELEASE}.0 SOVERSION 16 CLEAN_DIRECT_OUTPUT 1) diff --git a/LICENSE b/LICENSE index 42c0428880a927bd1bf3df1b700309f4a2ebafc8..8dfa45982fada8ad827d5d690c4d9b6d0d5d854c 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.3, July 18, 2013, are +libpng versions 1.2.6, August 15, 2004, through 1.6.4, September 12, 2013, are Copyright (c) 2004, 2006-2013 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 -July 18, 2013 +September 12, 2013 diff --git a/README b/README index 63334990e073ccce5884a0aecbbc630b8515acb3..13bde2fe9b186f941cae91f44c74d89a20f5daaa 100644 --- a/README +++ b/README @@ -1,4 +1,4 @@ -README for libpng version 1.6.3 - July 18, 2013 (shared library 16.0) +README for libpng version 1.6.4 - September 12, 2013 (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/arm/arm_init.c b/arm/arm_init.c index 15f51625a9abc8c83cfa568d3b5861719e40baab..17aa010ae27040a4bb02037493a99ca3563f3d45 100644 --- a/arm/arm_init.c +++ b/arm/arm_init.c @@ -17,6 +17,8 @@ #include "../pngpriv.h" #ifdef PNG_READ_SUPPORTED + if (((png_ptr->options >> PNG_MAXIMUM_INFLATE_WINDOW) & 3) == + PNG_OPTION_ON) #if PNG_ARM_NEON_OPT > 0 #ifdef PNG_ARM_NEON_CHECK_SUPPORTED /* Do run-time checks */ #include /* for sig_atomic_t */ diff --git a/configure.ac b/configure.ac index 0ef3c646a0c13d84e9561742d68e9eb450e1d064..a9e3f5bd825d5fa607255b92b8181b816a039a66 100644 --- a/configure.ac +++ b/configure.ac @@ -18,7 +18,7 @@ AC_PREREQ([2.68]) dnl Version number stuff here: -AC_INIT([libpng],[1.6.3],[png-mng-implement@lists.sourceforge.net]) +AC_INIT([libpng],[1.6.4],[png-mng-implement@lists.sourceforge.net]) AC_CONFIG_MACRO_DIR([scripts]) # libpng does not follow GNU file name conventions (hence 'foreign') @@ -39,10 +39,10 @@ dnl automake, so the following is not necessary (and is not defined anyway): dnl AM_PREREQ([1.11.2]) dnl stop configure from automagically running automake -PNGLIB_VERSION=1.6.3 +PNGLIB_VERSION=1.6.4 PNGLIB_MAJOR=1 PNGLIB_MINOR=6 -PNGLIB_RELEASE=3 +PNGLIB_RELEASE=4 dnl End of version number stuff diff --git a/libpng-manual.txt b/libpng-manual.txt index 976b055e8c703a62836e1ba3e744a481b7e6cea7..9ad084f186ede9e189fc99e4646612cae5923054 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.3 - July 18, 2013 + libpng version 1.6.4 - September 12, 2013 Updated and distributed by Glenn Randers-Pehrson Copyright (c) 1998-2013 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.3 - July 18, 2013 + libpng versions 0.97, January 1998, through 1.6.4 - September 12, 2013 Updated and distributed by Glenn Randers-Pehrson Copyright (c) 1998-2013 Glenn Randers-Pehrson @@ -740,7 +740,7 @@ situations: encoding. You would use the linear (unencoded) value if you need to process the pixel -values further because this avoids the need to decode and reencode each +values further because this avoids the need to decode and re-encode each component value whenever arithmetic is performed. A lot of graphics software uses linear values for this reason, often with higher precision component values to preserve overall accuracy. @@ -3535,7 +3535,7 @@ The simplified API, which became available in libpng-1.6.0, hides the details of both libpng and the PNG file format itself. It allows PNG files to be read into a very limited number of in-memory bitmap formats or to be written from the same formats. If these -formats do not accomodate your needs then you can, and should, use the more +formats do not accommodate your needs then you can, and should, use the more sophisticated APIs above - these support a wide variety of in-memory formats and a wide variety of sophisticated transformations to those formats as well as a wide variety of APIs to manipulate ancilliary information. @@ -4609,7 +4609,7 @@ it has not been well tested and doesn't actually "dither". The code was not removed, however, and could be enabled by building libpng with PNG_READ_DITHER_SUPPORTED defined. In libpng-1.4.2, this support -was reenabled, but the function was renamed png_set_quantize() to +was re-enabled, but the function was renamed png_set_quantize() to reflect more accurately what it actually does. At the same time, the PNG_DITHER_[RED,GREEN_BLUE]_BITS macros were also renamed to PNG_QUANTIZE_[RED,GREEN,BLUE]_BITS, and PNG_READ_DITHER_SUPPORTED @@ -4753,7 +4753,7 @@ did not exist.) Applications can now choose whether to use these macros or to call the corresponding function by defining PNG_USE_READ_MACROS or PNG_NO_USE_READ_MACROS before including png.h. Notice that this is -only supported from 1.5.0 -defining PNG_NO_USE_READ_MACROS prior to 1.5.0 +only supported from 1.5.0; defining PNG_NO_USE_READ_MACROS prior to 1.5.0 will lead to a link failure. Prior to libpng-1.5.4, the zlib compressor used the same set of parameters @@ -4789,6 +4789,9 @@ limits are now png_user_chunk_cache_max 0 (unlimited) 128 png_user_chunk_malloc_max 0 (unlimited) 8,000,000 +The png_set_option() function (and the "options" member of the png struct) was +added to libpng-1.5.15. + B. Changes to the build and configuration of libpng Details of internal changes to the library code can be found in the CHANGES @@ -5051,8 +5054,12 @@ to set the size of the sliding window for reading instead of using the default files in the wild that have incorrect CMF bytes that cause libpng to now issue a "too far back" error and reject the file. Libpng-1.6.3 provides a way to revert to the libpng-1.5.x behavior (ignoring the CMF bytes and using a -32-kbyte sliding window), and provides a tool -(contrib/tools/png-fix-too-far-back) for optimizing the CMF bytes +32-kbyte sliding window), by using + + png_set_option(png_ptr, PNG_MAXIMUM_INFLATE_WINDOW, + PNG_OPTION_ON); + +and provides a tool (contrib/tools/pngfix) for optimizing the CMF bytes correctly. Libpng-1.6.0 and libpng-1.6.1 wrote uncompressed iTXt chunks with the wrong @@ -5222,13 +5229,13 @@ Other rules can be inferred by inspecting the libpng source. XVI. Y2K Compliance in libpng -July 18, 2013 +September 12, 2013 Since the PNG Development group is an ad-hoc body, we can't make an official declaration. This is your unofficial assurance that libpng from version 0.71 and -upward through 1.6.3 are Y2K compliant. It is my belief that earlier +upward through 1.6.4 are Y2K compliant. It is my belief that earlier versions were also Y2K compliant. Libpng only has two year fields. One is a 2-byte unsigned integer diff --git a/libpng.3 b/libpng.3 index 5d576f3392547ec1a2c7a3d3e50d4563f656027e..348f5d1808661683f9f19d0adfd421210cd9035e 100644 --- a/libpng.3 +++ b/libpng.3 @@ -1,6 +1,6 @@ -.TH LIBPNG 3 "July 18, 2013" +.TH LIBPNG 3 "September 12, 2013" .SH NAME -libpng \- Portable Network Graphics (PNG) Reference Library 1.6.3 +libpng \- Portable Network Graphics (PNG) Reference Library 1.6.4 .SH SYNOPSIS \fB #include \fP @@ -504,7 +504,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.3 - July 18, 2013 + libpng version 1.6.4 - September 12, 2013 Updated and distributed by Glenn Randers-Pehrson Copyright (c) 1998-2013 Glenn Randers-Pehrson @@ -515,7 +515,7 @@ libpng-manual.txt - A description on how to use and modify libpng Based on: - libpng versions 0.97, January 1998, through 1.6.3 - July 18, 2013 + libpng versions 0.97, January 1998, through 1.6.4 - September 12, 2013 Updated and distributed by Glenn Randers-Pehrson Copyright (c) 1998-2013 Glenn Randers-Pehrson @@ -672,7 +672,7 @@ All APIs that take (double) arguments also have a matching API that takes the corresponding fixed point integer arguments. The fixed point API has the same name as the floating point one with "_fixed" appended. The actual range of values permitted in the APIs is frequently less than -the full range of (png_fixed_point) (-21474 to +21474). When APIs require +the full range of (png_fixed_point) (\-21474 to +21474). When APIs require a non-negative argument the type is recorded as png_uint_32 above. Consult the header file and the text below for more information. @@ -713,7 +713,7 @@ The easiest way to make minor changes to the libpng configuration when auto-configuration is supported is to add definitions to the command line using (typically) CPPFLAGS. For example: -CPPFLAGS=-DPNG_NO_FLOATING_ARITHMETIC +CPPFLAGS=\-DPNG_NO_FLOATING_ARITHMETIC will change the internal libpng math implementation for gamma correction and other arithmetic calculations to fixed point, avoiding the need for fast @@ -721,7 +721,7 @@ floating point support. The result can be seen in the generated pnglibconf.h - make sure it contains the changed feature macro setting. If you need to make more extensive configuration changes - more than one or two -feature macro settings - you can either add -DPNG_USER_CONFIG to the build +feature macro settings - you can either add \-DPNG_USER_CONFIG to the build command line and put a list of feature macro settings in pngusr.h or you can set DFA_XTRA (a makefile variable) to a file containing the same information in the form of 'option' settings. @@ -780,7 +780,7 @@ pngusr.dfa in these directories. C. Configuration using PNG_USR_CONFIG -If -DPNG_USR_CONFIG is added to the CFLAGS when pnglibconf.h is built the file +If \-DPNG_USR_CONFIG is added to the CFLAGS when pnglibconf.h is built the file pngusr.h will automatically be included before the options in scripts/pnglibconf.dfa are processed. Your pngusr.h file should contain only macro definitions turning features on or off or setting settings. @@ -1010,7 +1010,7 @@ input stream. You must supply the function unknown chunk structure, process it, and return one of the following: */ - return (-n); /* chunk had an error */ + return (\-n); /* chunk had an error */ return (0); /* did not recognize */ return (n); /* success */ } @@ -1061,7 +1061,7 @@ non-interlaced case the row that was just handled is simply one less than the passed in row number, and pass will always be 0. For the interlaced case the same applies unless the row value is 0, in which case the row just handled was the last one from one of the preceding passes. Because interlacing may skip a -pass you cannot be sure that the preceding pass is just 'pass-1', if you really +pass you cannot be sure that the preceding pass is just 'pass\-1', if you really need to know what the last pass is record (row,pass) from the callback and use the last recorded value each time. @@ -1151,7 +1151,7 @@ callback function: .SS User limits The PNG specification allows the width and height of an image to be as -large as 2^31-1 (0x7fffffff), or about 2.147 billion rows and columns. +large as 2^(31\-1 (0x7fffffff), or about 2.147 billion rows and columns. Since very few applications really need to process such large images, we have imposed an arbitrary 1-million limit on rows and columns. Larger images will be rejected immediately with a png_error() call. If @@ -1244,7 +1244,7 @@ situations: encoding. You would use the linear (unencoded) value if you need to process the pixel -values further because this avoids the need to decode and reencode each +values further because this avoids the need to decode and re-encode each component value whenever arithmetic is performed. A lot of graphics software uses linear values for this reason, often with higher precision component values to preserve overall accuracy. @@ -2723,13 +2723,13 @@ point to libpng-allocated storage with the following function: or simply PNG_FREE_ALL seq - sequence number of item to be freed - (-1 for all items) + (\-1 for all items) This function may be safely called when the relevant storage has already been freed, or has not yet been allocated, or was allocated by the user and not by libpng, and will in those cases do nothing. The "seq" parameter is ignored if only one item of the selected data -type, such as PLTE, is allowed. If "seq" is not -1, and multiple items +type, such as PLTE, is allowed. If "seq" is not \-1, and multiple items are allowed for the data type identified in the mask, such as text or sPLT, only the n'th item in the structure is freed, where n is "seq". @@ -3130,7 +3130,7 @@ non-interlaced case the row that was just handled is simply one less than the passed in row number, and pass will always be 0. For the interlaced case the same applies unless the row value is 0, in which case the row just handled was the last one from one of the preceding passes. Because interlacing may skip a -pass you cannot be sure that the preceding pass is just 'pass-1', if you really +pass you cannot be sure that the preceding pass is just 'pass\-1', if you really need to know what the last pass is record (row,pass) from the callback and use the last recorded value each time. @@ -3970,13 +3970,13 @@ point to libpng-allocated storage with the following function: or simply PNG_FREE_ALL seq - sequence number of item to be freed - (-1 for all items) + (\-1 for all items) This function may be safely called when the relevant storage has already been freed, or has not yet been allocated, or was allocated by the user and not by libpng, and will in those cases do nothing. The "seq" parameter is ignored if only one item of the selected data -type, such as PLTE, is allowed. If "seq" is not -1, and multiple items +type, such as PLTE, is allowed. If "seq" is not \-1, and multiple items are allowed for the data type identified in the mask, such as text or sPLT, only the n'th item in the structure is freed, where n is "seq". @@ -4039,7 +4039,7 @@ The simplified API, which became available in libpng-1.6.0, hides the details of both libpng and the PNG file format itself. It allows PNG files to be read into a very limited number of in-memory bitmap formats or to be written from the same formats. If these -formats do not accomodate your needs then you can, and should, use the more +formats do not accommodate your needs then you can, and should, use the more sophisticated APIs above - these support a wide variety of in-memory formats and a wide variety of sophisticated transformations to those formats as well as a wide variety of APIs to manipulate ancilliary information. @@ -4829,7 +4829,7 @@ this version of libpng, but if you insert some they will be printed. Starting with libpng-1.6.0, you can configure libpng (when using the "configure" script) to prefix all exported symbols by means of the -configuration option "--with-libpng-prefix=FOO_", where FOO_ can be any +configuration option "\-\-with\-libpng\-prefix=FOO_", where FOO_ can be any string beginning with a letter and containing only uppercase and lowercase letters, digits, and the underscore (i.e., a C language identifier). This creates a set of macros in pnglibconf.h, so this is @@ -5114,7 +5114,7 @@ it has not been well tested and doesn't actually "dither". The code was not removed, however, and could be enabled by building libpng with PNG_READ_DITHER_SUPPORTED defined. In libpng-1.4.2, this support -was reenabled, but the function was renamed png_set_quantize() to +was re-enabled, but the function was renamed png_set_quantize() to reflect more accurately what it actually does. At the same time, the PNG_DITHER_[RED,GREEN_BLUE]_BITS macros were also renamed to PNG_QUANTIZE_[RED,GREEN,BLUE]_BITS, and PNG_READ_DITHER_SUPPORTED @@ -5152,7 +5152,7 @@ reading, and after png_write_png() or png_write_image() while writing. int max_palette = png_get_palette_max(png_ptr, info_ptr); -This will return the maximum palette index found in the image, or "-1" if +This will return the maximum palette index found in the image, or "\-1" if the palette was not checked, or "0" if no palette was found. Note that this does not account for any palette index used by ancillary chunks such as the bKGD chunk; you must check those separately to determine the maximum @@ -5258,7 +5258,7 @@ did not exist.) Applications can now choose whether to use these macros or to call the corresponding function by defining PNG_USE_READ_MACROS or PNG_NO_USE_READ_MACROS before including png.h. Notice that this is -only supported from 1.5.0 -defining PNG_NO_USE_READ_MACROS prior to 1.5.0 +only supported from 1.5.0; defining PNG_NO_USE_READ_MACROS prior to 1.5.0 will lead to a link failure. Prior to libpng-1.5.4, the zlib compressor used the same set of parameters @@ -5294,6 +5294,9 @@ limits are now png_user_chunk_cache_max 0 (unlimited) 128 png_user_chunk_malloc_max 0 (unlimited) 8,000,000 +The png_set_option() function (and the "options" member of the png struct) was +added to libpng-1.5.15. + B. Changes to the build and configuration of libpng Details of internal changes to the library code can be found in the CHANGES @@ -5556,8 +5559,12 @@ to set the size of the sliding window for reading instead of using the default files in the wild that have incorrect CMF bytes that cause libpng to now issue a "too far back" error and reject the file. Libpng-1.6.3 provides a way to revert to the libpng-1.5.x behavior (ignoring the CMF bytes and using a -32-kbyte sliding window), and provides a tool -(contrib/tools/png-fix-too-far-back) for optimizing the CMF bytes +32-kbyte sliding window), by using + + png_set_option(png_ptr, PNG_MAXIMUM_INFLATE_WINDOW, + PNG_OPTION_ON); + +and provides a tool (contrib/tools/pngfix) for optimizing the CMF bytes correctly. Libpng-1.6.0 and libpng-1.6.1 wrote uncompressed iTXt chunks with the wrong @@ -5706,7 +5713,7 @@ C binary operator and after "for" or "while", and before being cast, nor do we put one between a function name and the left parenthesis that follows it: - for (i = 2; i > 0; --i) + for (i = 2; i > 0; \-\-i) y[i] = a(x) + (int)b; We prefer #ifdef and #ifndef to #if defined() and #if !defined() @@ -5727,13 +5734,13 @@ Other rules can be inferred by inspecting the libpng source. .SH XVI. Y2K Compliance in libpng -July 18, 2013 +September 12, 2013 Since the PNG Development group is an ad-hoc body, we can't make an official declaration. This is your unofficial assurance that libpng from version 0.71 and -upward through 1.6.3 are Y2K compliant. It is my belief that earlier +upward through 1.6.4 are Y2K compliant. It is my belief that earlier versions were also Y2K compliant. Libpng only has two year fields. One is a 2-byte unsigned integer @@ -5950,6 +5957,9 @@ the first widely used release: 1.6.3beta01-11 16 10603 16.so.16.3[.0] 1.6.3rc01 16 10603 16.so.16.3[.0] 1.6.3 16 10603 16.so.16.3[.0] + 1.6.4beta01-02 16 10604 16.so.16.4[.0] + 1.6.4rc01 16 10604 16.so.16.4[.0] + 1.6.4 16 10604 16.so.16.4[.0] Henceforth the source version will match the shared-library minor and patch numbers; the shared-library major version number will be @@ -6006,7 +6016,7 @@ possible without all of you. Thanks to Frank J. T. Wojcik for helping with the documentation. -Libpng version 1.6.3 - July 18, 2013: +Libpng version 1.6.4 - September 12, 2013: Initially created in 1995 by Guy Eric Schalnat, then of Group 42, Inc. Currently maintained by Glenn Randers-Pehrson (glennrp at users.sourceforge.net). @@ -6029,7 +6039,7 @@ this sentence. This code is released under the libpng license. -libpng versions 1.2.6, August 15, 2004, through 1.6.3, July 18, 2013, are +libpng versions 1.2.6, August 15, 2004, through 1.6.4, September 12, 2013, 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 @@ -6128,7 +6138,7 @@ certification mark of the Open Source Initiative. Glenn Randers-Pehrson glennrp at users.sourceforge.net -July 18, 2013 +September 12, 2013 .\" end of man page diff --git a/libpngpf.3 b/libpngpf.3 index 15419f400f7fed0d1b7cfbd7306192cd4293fe2f..ad3fbc60a0422826a8e98a2ffb8e75ec047a6478 100644 --- a/libpngpf.3 +++ b/libpngpf.3 @@ -1,6 +1,6 @@ -.TH LIBPNGPF 3 "July 18, 2013" +.TH LIBPNGPF 3 "September 12, 2013" .SH NAME -libpng \- Portable Network Graphics (PNG) Reference Library 1.6.3 +libpng \- Portable Network Graphics (PNG) Reference Library 1.6.4 (private functions) .SH SYNOPSIS \fB#include \fI"pngpriv.h" diff --git a/png.5 b/png.5 index eaefa295aacf0c28efd7015725ba52c3b6d3c25e..9862904af4c50ae8516b75ce7d851769bfae902c 100644 --- a/png.5 +++ b/png.5 @@ -1,4 +1,4 @@ -.TH PNG 5 "July 18, 2013" +.TH PNG 5 "September 12, 2013" .SH NAME png \- Portable Network Graphics (PNG) format .SH DESCRIPTION diff --git a/png.c b/png.c index 73418818983ae74e165bab343ce9d6ddc1e9edea..09d671c69a21e6f4c7bd5c5e5172602c81893088 100644 --- a/png.c +++ b/png.c @@ -14,7 +14,7 @@ #include "pngpriv.h" /* Generate a compiler error if there is an old png.h in the search path. */ -typedef png_libpng_version_1_6_3 Your_png_h_is_not_version_1_6_3; +typedef png_libpng_version_1_6_4 Your_png_h_is_not_version_1_6_4; /* Tells libpng that we have already handled the first "num_bytes" bytes * of the PNG file signature. If the PNG data is embedded into another @@ -768,13 +768,13 @@ png_get_copyright(png_const_structrp png_ptr) #else # ifdef __STDC__ return PNG_STRING_NEWLINE \ - "libpng version 1.6.3 - July 18, 2013" PNG_STRING_NEWLINE \ + "libpng version 1.6.4 - September 12, 2013" PNG_STRING_NEWLINE \ "Copyright (c) 1998-2013 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.3 - July 18, 2013\ + return "libpng version 1.6.4 - September 12, 2013\ Copyright (c) 1998-2013 Glenn Randers-Pehrson\ Copyright (c) 1996-1997 Andreas Dilger\ Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc."; @@ -855,7 +855,7 @@ png_handle_as_unknown(png_const_structrp png_ptr, png_const_bytep chunk_name) return PNG_HANDLE_CHUNK_AS_DEFAULT; } -#ifdef PNG_READ_UNKNOWN_CHUNKS_SUPPORTED +#ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED int /* PRIVATE */ png_chunk_unknown_handling(png_const_structrp png_ptr, png_uint_32 chunk_name) { @@ -864,7 +864,7 @@ png_chunk_unknown_handling(png_const_structrp png_ptr, png_uint_32 chunk_name) PNG_CSTRING_FROM_CHUNK(chunk_string, chunk_name); return png_handle_as_unknown(png_ptr, chunk_string); } -#endif /* READ_UNKNOWN_CHUNKS */ +#endif /* HANDLE_AS_UNKNOWN */ #endif /* SET_UNKNOWN_CHUNKS */ #ifdef PNG_READ_SUPPORTED diff --git a/png.h b/png.h index cf1a27cedd6359d622632bf4955221df1e8a0e97..229769e0b30b66af53567fb9e48a8710c71c22de 100644 --- a/png.h +++ b/png.h @@ -1,7 +1,7 @@ /* png.h - header file for PNG reference library * - * libpng version 1.6.3 - July 18, 2013 + * libpng version 1.6.4 - September 12, 2013 * Copyright (c) 1998-2013 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.3 - July 18, 2013: Glenn + * libpng versions 0.97, January 1998, through 1.6.4 - September 12, 2013: Glenn * See also "Contributing Authors", below. * * Note about libpng version numbers: @@ -178,6 +178,9 @@ * 1.6.3beta01-11 16 10603 16.so.16.3[.0] * 1.6.3rc01 16 10603 16.so.16.3[.0] * 1.6.3 16 10603 16.so.16.3[.0] + * 1.6.4beta01-02 16 10604 16.so.16.4[.0] + * 1.6.4rc01 16 10604 16.so.16.4[.0] + * 1.6.4 16 10604 16.so.16.4[.0] * * Henceforth the source version will match the shared-library major * and minor numbers; the shared-library major version number will be @@ -209,7 +212,7 @@ * * This code is released under the libpng license. * - * libpng versions 1.2.6, August 15, 2004, through 1.6.3, July 18, 2013, are + * libpng versions 1.2.6, August 15, 2004, through 1.6.4, September 12, 2013, are * Copyright (c) 2004, 2006-2013 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: @@ -321,13 +324,13 @@ * Y2K compliance in libpng: * ========================= * - * July 18, 2013 + * September 12, 2013 * * Since the PNG Development group is an ad-hoc body, we can't make * an official declaration. * * This is your unofficial assurance that libpng from version 0.71 and - * upward through 1.6.3 are Y2K compliant. It is my belief that + * upward through 1.6.4 are Y2K compliant. It is my belief that * earlier versions were also Y2K compliant. * * Libpng only has two year fields. One is a 2-byte unsigned integer @@ -387,9 +390,9 @@ */ /* Version information for png.h - this should match the version in png.c */ -#define PNG_LIBPNG_VER_STRING "1.6.3" +#define PNG_LIBPNG_VER_STRING "1.6.4" #define PNG_HEADER_VERSION_STRING \ - " libpng version 1.6.3 - July 18, 2013\n" + " libpng version 1.6.4 - September 12, 2013\n" #define PNG_LIBPNG_VER_SONUM 16 #define PNG_LIBPNG_VER_DLLNUM 16 @@ -397,7 +400,7 @@ /* These should match the first 3 components of PNG_LIBPNG_VER_STRING: */ #define PNG_LIBPNG_VER_MAJOR 1 #define PNG_LIBPNG_VER_MINOR 6 -#define PNG_LIBPNG_VER_RELEASE 3 +#define PNG_LIBPNG_VER_RELEASE 4 /* This should match the numeric part of the final component of * PNG_LIBPNG_VER_STRING, omitting any leading zero: @@ -428,7 +431,7 @@ * version 1.0.0 was mis-numbered 100 instead of 10000). From * version 1.0.1 it's xxyyzz, where x=major, y=minor, z=release */ -#define PNG_LIBPNG_VER 10603 /* 1.6.3 */ +#define PNG_LIBPNG_VER 10604 /* 1.6.4 */ /* Library configuration: these options cannot be changed after * the library has been built. @@ -533,7 +536,7 @@ extern "C" { /* This triggers a compiler error in png.c, if png.c and png.h * do not agree upon the version number. */ -typedef char* png_libpng_version_1_6_3; +typedef char* png_libpng_version_1_6_4; /* Basic control structions. Read libpng-manual.txt or libpng.3 for more info. * diff --git a/pngconf.h b/pngconf.h index 0808c1cedd03853e2164657a66c382bc54f63554..dc7bccb0f96fc6648b59536a4daea39cebbb7a43 100644 --- a/pngconf.h +++ b/pngconf.h @@ -1,7 +1,7 @@ /* pngconf.h - machine configurable file for libpng * - * libpng version 1.6.3 - July 18, 2013 + * libpng version 1.6.4 - September 12, 2013 * * Copyright (c) 1998-2013 Glenn Randers-Pehrson * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) diff --git a/pngpriv.h b/pngpriv.h index 4d8051f929eb19987accc50bdec0ec12f9b01c8e..fb15134c00e3e40908cdf1a1fa1f0d6c5d5ffa26 100644 --- a/pngpriv.h +++ b/pngpriv.h @@ -1431,15 +1431,13 @@ PNG_INTERNAL_FUNCTION(void,png_handle_unknown,(png_structrp png_ptr, * just skips the chunk or errors out if it is critical. */ -#ifdef PNG_READ_UNKNOWN_CHUNKS_SUPPORTED -#ifdef PNG_SET_UNKNOWN_CHUNKS_SUPPORTED +#ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED PNG_INTERNAL_FUNCTION(int,png_chunk_unknown_handling, (png_const_structrp png_ptr, png_uint_32 chunk_name),PNG_EMPTY); /* Exactly as the API png_handle_as_unknown() except that the argument is a * 32-bit chunk name, not a string. */ -#endif -#endif /* PNG_READ_UNKNOWN_CHUNKS_SUPPORTED */ +#endif /* PNG_HANDLE_AS_UNKNOWN_SUPPORTED */ #endif /* PNG_READ_SUPPORTED */ /* Handle the transformations for reading and writing */ diff --git a/pngread.c b/pngread.c index e32f31d5416d85856dfa00ee39e06494c81aa9b4..8f96ca23eb0ee5333c29e0febb1e57704a42fcf7 100644 --- a/pngread.c +++ b/pngread.c @@ -3285,7 +3285,7 @@ png_image_read_background(png_voidp argument) case 8: /* 8-bit sRGB gray values with an alpha channel; the alpha channel is - * to be removed by composing on a backgroundi: either the row if + * to be removed by composing on a background: either the row if * display->background is NULL or display->background->green if not. * Unlike the code above ALPHA_OPTIMIZED has *not* been done. */ diff --git a/pngrtran.c b/pngrtran.c index e378ceba4ed684546d79cc0240c8cc3b50d59dc6..bc9be39fb087d169357112a21b1572f3123c9fbb 100644 --- a/pngrtran.c +++ b/pngrtran.c @@ -1,7 +1,7 @@ /* pngrtran.c - transforms the data in a row for PNG readers * - * Last changed in libpng 1.6.2 [April 25, 2013] + * Last changed in libpng 1.6.4 [September 12, 2013] * Copyright (c) 1998-2013 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.) @@ -1116,12 +1116,18 @@ png_init_palette_transformations(png_structrp png_ptr) /* Ignore if all the entries are opaque (unlikely!) */ for (i=0; inum_trans; ++i) + { if (png_ptr->trans_alpha[i] == 255) continue; else if (png_ptr->trans_alpha[i] == 0) input_has_transparency = 1; else + { + input_has_transparency = 1; input_has_alpha = 1; + break; + } + } } /* If no alpha we can optimize. */ @@ -1878,31 +1884,34 @@ png_init_read_transformations(png_structrp png_ptr) * the number of significant bits is 0 then no shift is done (this is an * error condition which is silently ignored.) */ - if (shift > 0 && shift < 8) for (i=0; ipalette[i].red; + if (shift > 0 && shift < 8) + for (i=0; ipalette[i].red; - component >>= shift; - png_ptr->palette[i].red = (png_byte)component; - } + component >>= shift; + png_ptr->palette[i].red = (png_byte)component; + } shift = 8 - png_ptr->sig_bit.green; - if (shift > 0 && shift < 8) for (i=0; ipalette[i].green; + if (shift > 0 && shift < 8) + for (i=0; ipalette[i].green; - component >>= shift; - png_ptr->palette[i].green = (png_byte)component; - } + component >>= shift; + png_ptr->palette[i].green = (png_byte)component; + } shift = 8 - png_ptr->sig_bit.blue; - if (shift > 0 && shift < 8) for (i=0; ipalette[i].blue; + if (shift > 0 && shift < 8) + for (i=0; ipalette[i].blue; - component >>= shift; - png_ptr->palette[i].blue = (png_byte)component; - } + component >>= shift; + png_ptr->palette[i].blue = (png_byte)component; + } } #endif /* PNG_READ_SHIFT_SUPPORTED */ } diff --git a/pngrutil.c b/pngrutil.c index 0a75cd81ce39889fb7c4a20390732e26b186d5ec..587feb8a463ed43734d9ae19121fd8bdf80d810c 100644 --- a/pngrutil.c +++ b/pngrutil.c @@ -1,7 +1,7 @@ /* pngrutil.c - utilities to read a PNG file * - * Last changed in libpng 1.6.3 [July 18, 2013] + * Last changed in libpng 1.6.4 [September 12, 2013] * Copyright (c) 1998-2013 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.) @@ -2764,7 +2764,6 @@ png_handle_unknown(png_structrp png_ptr, png_inforp info_ptr, png_debug(1, "in png_handle_unknown"); -#ifdef PNG_READ_UNKNOWN_CHUNKS_SUPPORTED /* NOTE: this code is based on the code in libpng-1.4.12 except for fixing * the bug which meant that setting a non-default behavior for a specific * chunk would be ignored (the default was always used unless a user @@ -2776,16 +2775,15 @@ png_handle_unknown(png_structrp png_ptr, png_inforp info_ptr, * This is just an optimization to avoid multiple calls to the lookup * function. */ -# ifndef PNG_HANDLE_AS_UNKNOWN_SUPPORTED -# ifdef PNG_SET_UNKNOWN_CHUNKS_SUPPORTED - keep = png_chunk_unknown_handling(png_ptr, png_ptr->chunk_name); -# endif +# ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED + keep = png_chunk_unknown_handling(png_ptr, png_ptr->chunk_name); # endif /* One of the following methods will read the chunk or skip it (at least one * of these is always defined because this is the only way to switch on * PNG_READ_UNKNOWN_CHUNKS_SUPPORTED) */ +#ifdef PNG_READ_UNKNOWN_CHUNKS_SUPPORTED # ifdef PNG_READ_USER_CHUNKS_SUPPORTED /* The user callback takes precedence over the chunk keep value, but the * keep value is still required to validate a save of a critical chunk. @@ -2893,7 +2891,7 @@ png_handle_unknown(png_structrp png_ptr, png_inforp info_ptr, png_crc_finish(png_ptr, length); } -# endif +# endif /* PNG_SAVE_UNKNOWN_CHUNKS_SUPPORTED */ # ifdef PNG_STORE_UNKNOWN_CHUNKS_SUPPORTED /* Now store the chunk in the chunk list if appropriate, and if the limits @@ -3880,7 +3878,8 @@ png_read_filter_row_paeth_multibyte_pixel(png_row_infop row_info, png_bytep row, static void png_init_filter_functions(png_structrp pp) - /* This function is called once for every PNG image to set the + /* This function is called once for every PNG image (except for PNG images + * that only use PNG_FILTER_VALUE_NONE for all rows) to set the * implementations required to reverse the filtering of PNG rows. Reversing * the filter is the first transformation performed on the row data. It is * performed in place, therefore an implementation can be selected based on @@ -3922,10 +3921,13 @@ png_read_filter_row(png_structrp pp, png_row_infop row_info, png_bytep row, * PNG_FILTER_OPTIMIZATIONS to a function that overrides the generic * implementations. See png_init_filter_functions above. */ - if (pp->read_filter[0] == NULL) - png_init_filter_functions(pp); if (filter > PNG_FILTER_VALUE_NONE && filter < PNG_FILTER_VALUE_LAST) + { + if (pp->read_filter[0] == NULL) + png_init_filter_functions(pp); + pp->read_filter[filter-1](row_info, row, prev_row); + } } #ifdef PNG_SEQUENTIAL_READ_SUPPORTED diff --git a/pngtest.c b/pngtest.c index 8ebe97c2ff8697f5b473aa40eabd3b632da19d0e..4ca894b2fe52c95b8e03f93b4d6eaf675b5d1979 100644 --- a/pngtest.c +++ b/pngtest.c @@ -1968,4 +1968,4 @@ main(void) #endif /* Generate a compiler error if there is an old png.h in the search path. */ -typedef png_libpng_version_1_6_3 Your_png_h_is_not_version_1_6_3; +typedef png_libpng_version_1_6_4 Your_png_h_is_not_version_1_6_4; diff --git a/projects/vstudio/readme.txt b/projects/vstudio/readme.txt index 8edd4bba5220b2b3328479438db4dac189e7d832..1a0af8db86e7012f4daaf2beea85f8c7d028507f 100644 --- a/projects/vstudio/readme.txt +++ b/projects/vstudio/readme.txt @@ -1,7 +1,7 @@ VisualStudio instructions -libpng version 1.6.3 - July 18, 2013 +libpng version 1.6.4 - September 12, 2013 Copyright (c) 1998-2010 Glenn Randers-Pehrson diff --git a/projects/vstudio/zlib.props b/projects/vstudio/zlib.props index 9e06e3ac85bf8b4e5c4043bcc999885d4e497162..7a7dd14de1cc56dbf82013d59533268c1358f3cf 100644 --- a/projects/vstudio/zlib.props +++ b/projects/vstudio/zlib.props @@ -2,7 +2,7 @@