From d029a75d4f7e99b08691ce1e4986178083850b2b Mon Sep 17 00:00:00 2001 From: Glenn Randers-Pehrson Date: Mon, 9 Aug 2004 21:50:32 -0500 Subject: [PATCH] Imported from libpng-1.2.6rc3.tar --- ANNOUNCE | 9 ++++++- CHANGES | 14 +++++++--- INSTALL | 14 +++++----- KNOWNBUG | 2 +- LICENSE | 7 +++-- README | 2 +- Y2KINFO | 4 +-- configure | 4 +-- libpng.3 | 39 +++++++++++++++------------ libpng.txt | 22 +++++++++------ libpngpf.3 | 4 +-- png.5 | 2 +- png.c | 6 ++--- png.h | 50 ++++++++++++++++++++--------------- pngasmrd.h | 2 +- pngconf.h | 2 +- pngerror.c | 2 +- pnggccrd.c | 13 +++++---- pngget.c | 2 +- pngmem.c | 2 +- pngpread.c | 49 +++++++++++++++++++++++++--------- pngread.c | 6 ++--- pngrio.c | 2 +- pngrtran.c | 11 +++++--- pngrutil.c | 38 +++++++++++++------------- pngset.c | 2 +- pngtest.c | 24 ++++++++--------- pngtrans.c | 2 +- pngvcrd.c | 2 +- pngwio.c | 2 +- pngwrite.c | 2 +- pngwtran.c | 2 +- pngwutil.c | 2 +- scripts/libpng-config-head.in | 2 +- scripts/libpng.pc.in | 2 +- scripts/makefile.32sunu | 2 +- scripts/makefile.64sunu | 2 +- scripts/makefile.aix | 2 +- scripts/makefile.beos | 2 +- scripts/makefile.cygwin | 2 +- scripts/makefile.darwin | 2 +- scripts/makefile.dec | 2 +- scripts/makefile.gcmmx | 2 +- scripts/makefile.hpgcc | 2 +- scripts/makefile.hpux | 2 +- scripts/makefile.linux | 2 +- scripts/makefile.ne12bsd | 2 +- scripts/makefile.netbsd | 2 +- scripts/makefile.openbsd | 2 +- scripts/makefile.sco | 2 +- scripts/makefile.sggcc | 2 +- scripts/makefile.sgi | 2 +- scripts/makefile.so9 | 2 +- scripts/makefile.solaris | 2 +- scripts/pngos2.def | 2 +- scripts/pngw32.def | 2 +- 56 files changed, 225 insertions(+), 167 deletions(-) diff --git a/ANNOUNCE b/ANNOUNCE index c2565ba1..07202333 100644 --- a/ANNOUNCE +++ b/ANNOUNCE @@ -1,5 +1,5 @@ -Libpng 1.2.6rc2 - August 8, 2004 +Libpng 1.2.6rc3 - August 10, 2004 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. @@ -108,6 +108,13 @@ version 1.2.6rc2 [August 8, 2004] Changed "HANDLE_CHUNK_*" to "PNG_HANDLE_CHUNK_*" (Cosmin) Added "-@/bin/rm -f $(DL)/$(LIBNAME).so.$(PNGMAJ)" to 15 *NIX makefiles. Added code to update the row_info->colortype in png_do_read_filler() (MSB). +version 1.2.6rc3 [August 10, 2004] + Eliminated use of "abs()" in testing cHRM and gAMA values, to avoid + trouble with some 64-bit compilers. Created PNG_OUT_OF_RANGE() macro. + Revised documentation of png_set_keep_unknown_chunks(). + Check handle_as_unknown status in pngpread.c, as in pngread.c previously. + Restore "HANDLE_CHUNK_*" macros, but deprecated, for apps that use them. + Added "rim" definitions for CONST4 and CONST6 in pnggccrd.c Send comments/corrections/commendations to png-implement@ccrc.wustl.edu or to glennrp@users.sourceforge.net diff --git a/CHANGES b/CHANGES index 0e792977..88193c4b 100644 --- a/CHANGES +++ b/CHANGES @@ -1269,7 +1269,6 @@ version 1.2.6rc1 [August 4, 2004] Fixed some harmless bugs in png_handle_sBIT, etc, that would cause duplicate chunk types to go undetected. Fixed some timestamps in the -config version - Fixed some timestamps in the -config version Rearranged order of processing of color types in png_handle_tRNS(). Added ROWBYTES macro to calculate rowbytes without integer overflow. Updated makefile.darwin and removed makefile.macosx from scripts directory. @@ -1278,12 +1277,12 @@ version 1.2.6rc1 [August 4, 2004] Revised use of PNG_SET_USER_LIMITS_SUPPORTED macro. Fixed wrong cast of returns from png_get_user_width|height_max(). Changed some "keep the compiler happy" from empty statements to returns, -version 1.2.6rc2 [August 8, 2004] +version 1.2.6rc2 [August 7, 2004] Revised makefile.darwin and makefile.solaris. Removed makefile.macosx. Revised pngtest's png_debug_malloc() to use png_malloc() instead of - png_malloc_default() which is not supposed to be exported. + png_malloc_default() which is not supposed to be exported. Fixed off-by-one error in one of the conversions to PNG_ROWBYTES() in - pngpread.c. Bug was introduced in 1.2.6rc1. + pngpread.c. Bug was introduced in 1.2.6rc1. Fixed bug in RGB to RGBX transformation introduced in 1.2.6rc1. Fixed old bug in RGB to Gray transformation. Fixed problem with 64-bit compilers by casting arguments to abs() @@ -1292,6 +1291,13 @@ version 1.2.6rc2 [August 8, 2004] Changed "HANDLE_CHUNK_*" to "PNG_HANDLE_CHUNK_*" (Cosmin) Added "-@/bin/rm -f $(DL)/$(LIBNAME).so.$(PNGMAJ)" to 15 *NIX makefiles. Added code to update the row_info->colortype in png_do_read_filler() (MSB). +version 1.2.6rc3 [August 10, 2004] + Eliminated use of "abs()" in testing cHRM and gAMA values, to avoid + trouble with some 64-bit compilers. Created PNG_OUT_OF_RANGE() macro. + Revised documentation of png_set_keep_unknown_chunks(). + Check handle_as_unknown status in pngpread.c, as in pngread.c previously. + Moved "PNG_HANDLE_CHUNK_*" macros out of PNG_INTERNAL section of png.h + Added "rim" definitions for CONST4 and CONST6 in pnggccrd.c Send comments/corrections/commendations to png-implement@ccrc.wustl.edu or to glennrp@users.sourceforge.net diff --git a/INSTALL b/INSTALL index 54a88b54..c6bbf7dc 100644 --- a/INSTALL +++ b/INSTALL @@ -1,5 +1,5 @@ -Installing libpng version 1.2.6rc2 - August 8, 2004 +Installing libpng version 1.2.6rc3 - August 10, 2004 Before installing libpng, you must first install zlib. zlib can usually be found wherever you got libpng. zlib can be @@ -10,7 +10,7 @@ zlib.h and zconf.h include files that correspond to the version of zlib that's installed. You can rename the directories that you downloaded (they -might be called "libpng-1.2.6rc2" or "lpng109" and "zlib-1.1.3" +might be called "libpng-1.2.6rc3" or "lpng109" and "zlib-1.1.3" or "zlib113") so that you have directories called "zlib" and "libpng". Your directory structure should look like this: @@ -64,8 +64,8 @@ The files that are presently available in the scripts directory include makefile.std => Generic UNIX makefile (cc, creates static libpng.a) - makefile.linux => Linux/ELF makefile (gcc, creates libpng12.so.0.1.2.6rc2) - makefile.gcmmx => Linux/ELF makefile (gcc, creates libpng12.so.0.1.2.6rc2, + makefile.linux => Linux/ELF makefile (gcc, creates libpng12.so.0.1.2.6rc3) + makefile.gcmmx => Linux/ELF makefile (gcc, creates libpng12.so.0.1.2.6rc3, uses assembler code tuned for Intel MMX platform) makefile.gcc => Generic makefile (gcc, creates static libpng.a) makefile.knr => Archaic UNIX Makefile that converts files with @@ -85,10 +85,10 @@ include makefile.ne0bsd => NetBSD/cc makefile, uses PNGGCCRD, makes libpng0.so makefile.openbsd => OpenBSD makefile makefile.sgi => Silicon Graphics IRIX makefile (cc, creates static lib) - makefile.sggcc => Silicon Graphics (gcc, creates libpng12.so.0.1.2.6rc2) + makefile.sggcc => Silicon Graphics (gcc, creates libpng12.so.0.1.2.6rc3) makefile.sunos => Sun makefile - makefile.solaris => Solaris 2.X makefile (gcc, creates libpng12.so.0.1.2.6rc2) - makefile.so9 => Solaris 9 makefile (gcc, creates libpng12.so.0.1.2.6rc2) + makefile.solaris => Solaris 2.X makefile (gcc, creates libpng12.so.0.1.2.6rc3) + makefile.so9 => Solaris 9 makefile (gcc, creates libpng12.so.0.1.2.6rc3) makefile.32sunu => Sun Ultra 32-bit makefile makefile.64sunu => Sun Ultra 64-bit makefile makefile.sco => For SCO OSr5 ELF and Unixware 7 with Native cc diff --git a/KNOWNBUG b/KNOWNBUG index 0b473b66..6f11fe4d 100644 --- a/KNOWNBUG +++ b/KNOWNBUG @@ -1,5 +1,5 @@ -Known bugs in libpng version 1.2.6rc2 +Known bugs in libpng version 1.2.6rc3 1. April 22, 2001: pnggccrd.c has been reported to crash on NetBSD when reading interlaced PNG files, when assembler code is enabled but running diff --git a/LICENSE b/LICENSE index 6deebcac..b7f99992 100644 --- a/LICENSE +++ b/LICENSE @@ -8,13 +8,12 @@ COPYRIGHT NOTICE, DISCLAIMER, and LICENSE: If you modify libpng you may insert additional notices immediately following this sentence. -libpng version 1.2.6, August 8, 2004, is +libpng version 1.2.6, August 10, 2004, is Copyright (c) 2004 Glenn Randers-Pehrson, and is distributed according to the same disclaimer and license as libpng-1.2.5 -with the following individuals added to the list of Contributing Authors +with the following individual added to the list of Contributing Authors Cosmin Truta - - libpng versions 1.0.7, July 1, 2000, through 1.2.5 - October 3, 2002, are Copyright (c) 2000-2002 Glenn Randers-Pehrson, and are @@ -107,4 +106,4 @@ certification mark of the Open Source Initiative. Glenn Randers-Pehrson glennrp@users.sourceforge.net -August 8, 2004 +August 10, 2004 diff --git a/README b/README index 335e56e7..ff5d2028 100644 --- a/README +++ b/README @@ -1,4 +1,4 @@ -README for libpng version 1.2.6rc2 - August 8, 2004 (shared library 12.0) +README for libpng version 1.2.6rc3 - August 10, 2004 (shared library 12.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/Y2KINFO b/Y2KINFO index 4185958c..5b2ab6ed 100644 --- a/Y2KINFO +++ b/Y2KINFO @@ -1,13 +1,13 @@ Y2K compliance in libpng: ========================= - August 8, 2004 + August 10, 2004 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.2.6rc2 are Y2K compliant. It is my belief that earlier + upward through 1.2.6rc3 are Y2K compliant. It is my belief that earlier versions were also Y2K compliant. Libpng only has three year fields. One is a 2-byte unsigned integer diff --git a/configure b/configure index 6ff19320..78ac1207 100755 --- a/configure +++ b/configure @@ -1,13 +1,13 @@ #!/bin/sh echo " There is no \"configure\" script in this distribution of - libpng-1.2.6rc2. + libpng-1.2.6rc3. Instead, please copy the appropriate makefile for your system from the \"scripts\" directory. Read the INSTALL file for more details. Update, July 2004: you can get a "configure" based distribution from the libpng distribution sites. Download the file - libpng-1.2.6rc2-config.tar.gz + libpng-1.2.6rc3-config.tar.gz " diff --git a/libpng.3 b/libpng.3 index c6bddbba..f1158f92 100644 --- a/libpng.3 +++ b/libpng.3 @@ -1,6 +1,6 @@ -.TH LIBPNG 3 "August 8, 2004" +.TH LIBPNG 3 "August 10, 2004" .SH NAME -libpng \- Portable Network Graphics (PNG) Reference Library 1.2.6rc2 +libpng \- Portable Network Graphics (PNG) Reference Library 1.2.6rc3 .SH SYNOPSIS \fI\fB @@ -773,7 +773,7 @@ Following is a copy of the libpng.txt file that accompanies libpng. .SH LIBPNG.TXT libpng.txt - A description on how to use and modify libpng - libpng version 1.2.6rc2 - August 8, 2004 + libpng version 1.2.6rc3 - August 10, 2004 Updated and distributed by Glenn Randers-Pehrson Copyright (c) 1998-2004 Glenn Randers-Pehrson @@ -1105,9 +1105,15 @@ this, you can call: png_set_keep_unknown_chunks(png_ptr, keep, chunk_list, num_chunks); - keep - 0: do not keep - 1: keep only if safe-to-copy - 2: keep even if unsafe-to-copy + keep - 0: do not handle as unknown + 1: do not keep + 2: keep only if safe-to-copy + 3: keep even if unsafe-to-copy + You can use these definitions: + PNG_HANDLE_CHUNK_AS_DEFAULT 0 + PNG_HANDLE_CHUNK_NEVER 1 + PNG_HANDLE_CHUNK_IF_SAFE 2 + PNG_HANDLE_CHUNK_ALWAYS 3 chunk_list - list of chunks affected (a byte string, five bytes per chunk, NULL or '\0' if num_chunks is 0) @@ -1115,13 +1121,13 @@ this, you can call: unknown chunks are affected. If nonzero, only the chunks in the list are affected - Unknown chunks declared in this way will be saved as raw data onto a list of png_unknown_chunk structures. If a chunk that is normally known to libpng is named in the list, it will be handled as unknown, according to the "keep" directive. If a chunk is named in successive instances of png_set_keep_unknown_chunks(), the final instance will -take precedence. +take precedence. The IHDR and IEND chunks should not be named in +chunk_list; if they are, libpng will process them normally anyway. .SS The high-level read interface @@ -3651,13 +3657,13 @@ application: .SH VII. Y2K Compliance in libpng -August 8, 2004 +August 10, 2004 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.2.6rc2 are Y2K compliant. It is my belief that earlier +upward through 1.2.6rc3 are Y2K compliant. It is my belief that earlier versions were also Y2K compliant. Libpng only has three year fields. One is a 2-byte unsigned integer that @@ -3797,8 +3803,8 @@ the first widely used release: 1.0.15 10 10015 10.so.0.1.0.15 1.2.5 13 10205 12.so.0.1.2.5 1.2.6beta1-4 13 10206 12.so.0.1.2.6beta1-4 - 1.0.16rc1-4 10 10016 10.so.0.1.0.16rc1-4 - 1.2.6rc1-4 13 10206 12.so.0.1.2.6rc1-4 + 1.0.16rc1-3 10 10016 10.so.0.1.0.16rc1-3 + 1.2.6rc1-3 13 10206 12.so.0.1.2.6rc1-3 Henceforth the source version will match the shared-library minor and patch numbers; the shared-library major version number will be @@ -3856,7 +3862,7 @@ possible without all of you. Thanks to Frank J. T. Wojcik for helping with the documentation. -Libpng version 1.2.6rc2 - August 8, 2004: +Libpng version 1.2.6rc3 - August 10, 2004: Initially created in 1995 by Guy Eric Schalnat, then of Group 42, Inc. Currently maintained by Glenn Randers-Pehrson (glennrp@users.sourceforge.net). @@ -3873,13 +3879,12 @@ included in the libpng distribution, the latter shall prevail.) If you modify libpng you may insert additional notices immediately following this sentence. -libpng version 1.2.6, August 8, 2004, is +libpng version 1.2.6, August 10, 2004, is Copyright (c) 2004 Glenn Randers-Pehrson, and is distributed according to the same disclaimer and license as libpng-1.2.5 -with the following individuals added to the list of Contributing Authors +with the following individual added to the list of Contributing Authors Cosmin Truta - - libpng versions 1.0.7, July 1, 2000, through 1.2.5 - October 3, 2002, are Copyright (c) 2000-2002 Glenn Randers-Pehrson, and are @@ -3973,7 +3978,7 @@ certification mark of the Open Source Initiative. Glenn Randers-Pehrson glennrp@users.sourceforge.net -August 8, 2004 +August 10, 2004 .\" end of man page diff --git a/libpng.txt b/libpng.txt index f8afdca3..e212f628 100644 --- a/libpng.txt +++ b/libpng.txt @@ -1,6 +1,6 @@ libpng.txt - A description on how to use and modify libpng - libpng version 1.2.6rc2 - August 8, 2004 + libpng version 1.2.6rc3 - August 10, 2004 Updated and distributed by Glenn Randers-Pehrson Copyright (c) 1998-2004 Glenn Randers-Pehrson @@ -332,9 +332,15 @@ this, you can call: png_set_keep_unknown_chunks(png_ptr, keep, chunk_list, num_chunks); - keep - 0: do not keep - 1: keep only if safe-to-copy - 2: keep even if unsafe-to-copy + keep - 0: do not handle as unknown + 1: do not keep + 2: keep only if safe-to-copy + 3: keep even if unsafe-to-copy + You can use these definitions: + PNG_HANDLE_CHUNK_AS_DEFAULT 0 + PNG_HANDLE_CHUNK_NEVER 1 + PNG_HANDLE_CHUNK_IF_SAFE 2 + PNG_HANDLE_CHUNK_ALWAYS 3 chunk_list - list of chunks affected (a byte string, five bytes per chunk, NULL or '\0' if num_chunks is 0) @@ -342,13 +348,13 @@ this, you can call: unknown chunks are affected. If nonzero, only the chunks in the list are affected - Unknown chunks declared in this way will be saved as raw data onto a list of png_unknown_chunk structures. If a chunk that is normally known to libpng is named in the list, it will be handled as unknown, according to the "keep" directive. If a chunk is named in successive instances of png_set_keep_unknown_chunks(), the final instance will -take precedence. +take precedence. The IHDR and IEND chunks should not be named in +chunk_list; if they are, libpng will process them normally anyway. The high-level read interface @@ -2878,13 +2884,13 @@ application: VII. Y2K Compliance in libpng -August 8, 2004 +August 10, 2004 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.2.6rc2 are Y2K compliant. It is my belief that earlier +upward through 1.2.6rc3 are Y2K compliant. It is my belief that earlier versions were also Y2K compliant. Libpng only has three year fields. One is a 2-byte unsigned integer that diff --git a/libpngpf.3 b/libpngpf.3 index 88f5efa0..62c0966e 100644 --- a/libpngpf.3 +++ b/libpngpf.3 @@ -1,6 +1,6 @@ -.TH LIBPNGPF 3 "August 8, 2004" +.TH LIBPNGPF 3 "August 10, 2004" .SH NAME -libpng \- Portable Network Graphics (PNG) Reference Library 1.2.6rc2 +libpng \- Portable Network Graphics (PNG) Reference Library 1.2.6rc3 (private functions) .SH SYNOPSIS \fB\fB#include \fP\fP diff --git a/png.5 b/png.5 index 843ae52d..1ea94178 100644 --- a/png.5 +++ b/png.5 @@ -1,4 +1,4 @@ -.TH PNG 5 "August 8, 2004" +.TH PNG 5 "August 10, 2004" .SH NAME png \- Portable Network Graphics (PNG) format .SH DESCRIPTION diff --git a/png.c b/png.c index 97b36c9a..8c62bd66 100644 --- a/png.c +++ b/png.c @@ -1,7 +1,7 @@ /* png.c - location for general purpose libpng functions * - * libpng version 1.2.6rc2 - August 8, 2004 + * libpng version 1.2.6rc3 - August 10, 2004 * For conditions of distribution and use, see copyright notice in png.h * Copyright (c) 1998-2004 Glenn Randers-Pehrson * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) @@ -13,7 +13,7 @@ #include "png.h" /* Generate a compiler error if there is an old png.h in the search path. */ -typedef version_1_2_6rc2 Your_png_h_is_not_version_1_2_6rc2; +typedef version_1_2_6rc3 Your_png_h_is_not_version_1_2_6rc3; /* Version information for C files. This had better match the version * string defined in png.h. */ @@ -678,7 +678,7 @@ png_charp PNGAPI png_get_copyright(png_structp png_ptr) { if (&png_ptr != NULL) /* silence compiler warning about unused png_ptr */ - return ((png_charp) "\n libpng version 1.2.6rc2 - August 8, 2004\n\ + return ((png_charp) "\n libpng version 1.2.6rc3 - August 10, 2004\n\ Copyright (c) 1998-2004 Glenn Randers-Pehrson\n\ Copyright (c) 1996-1997 Andreas Dilger\n\ Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc.\n"); diff --git a/png.h b/png.h index 4a75b253..3bb5c44a 100644 --- a/png.h +++ b/png.h @@ -1,6 +1,6 @@ /* png.h - header file for PNG reference library * - * libpng version 1.2.6rc2 - August 8, 2004 + * libpng version 1.2.6rc3 - August 10, 2004 * Copyright (c) 1998-2004 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.) @@ -8,7 +8,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.2.6rc2 - August 8, 2004: Glenn + * libpng versions 0.97, January 1998, through 1.2.6rc3 - August 10, 2004: Glenn * See also "Contributing Authors", below. * * Note about libpng version numbers: @@ -99,8 +99,8 @@ * 1.0.15 10 10015 10.so.0.1.0.15 * 1.2.5 13 10205 12.so.0.1.2.5 * 1.2.6beta1-4 13 10206 12.so.0.1.2.6beta1-4 - * 1.0.16rc1-4 10 10016 10.so.0.1.0.16rc1-4 - * 1.2.6rc1-4 13 10206 12.so.0.1.2.6rc1-4 + * 1.0.16rc1-3 10 10016 10.so.0.1.0.16rc1-3 + * 1.2.6rc1-3 13 10206 12.so.0.1.2.6rc1-3 * * Henceforth the source version will match the shared-library major * and minor numbers; the shared-library major version number will be @@ -130,13 +130,12 @@ * If you modify libpng you may insert additional notices immediately following * this sentence. * - * libpng version 1.2.6, August 8, 2004, is + * libpng version 1.2.6, August 10, 2004, is * Copyright (c) 2004 Glenn Randers-Pehrson, and is * distributed according to the same disclaimer and license as libpng-1.2.5 - * with the following individuals added to the list of Contributing Authors + * with the following individual added to the list of Contributing Authors * * Cosmin Truta - * - * * libpng versions 1.0.7, July 1, 2000, through 1.2.5 - October 3, 2002, are * Copyright (c) 2000-2002 Glenn Randers-Pehrson, and are @@ -243,13 +242,13 @@ * Y2K compliance in libpng: * ========================= * - * August 8, 2004 + * August 10, 2004 * * 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.2.6rc2 are Y2K compliant. It is my belief that earlier + * upward through 1.2.6rc3 are Y2K compliant. It is my belief that earlier * versions were also Y2K compliant. * * Libpng only has three year fields. One is a 2-byte unsigned integer @@ -305,9 +304,9 @@ */ /* Version information for png.h - this should match the version in png.c */ -#define PNG_LIBPNG_VER_STRING "1.2.6rc2" +#define PNG_LIBPNG_VER_STRING "1.2.6rc3" #define PNG_HEADER_VERSION_STRING \ - " libpng version 1.2.6rc2 - August 8, 2004 (header)\n" + " libpng version 1.2.6rc3 - August 10, 2004 (header)\n" #define PNG_LIBPNG_VER_SONUM 0 #define PNG_LIBPNG_VER_DLLNUM %DLLNUM% @@ -319,7 +318,7 @@ /* This should match the numeric part of the final component of * PNG_LIBPNG_VER_STRING, omitting any leading zero: */ -#define PNG_LIBPNG_VER_BUILD 2 +#define PNG_LIBPNG_VER_BUILD 3 #define PNG_LIBPNG_BUILD_ALPHA 1 #define PNG_LIBPNG_BUILD_BETA 2 @@ -1311,7 +1310,7 @@ struct png_struct_def /* This triggers a compiler error in png.c, if png.c and png.h * do not agree upon the version number. */ -typedef png_structp version_1_2_6rc2; +typedef png_structp version_1_2_6rc3; typedef png_struct FAR * FAR * png_structpp; @@ -2417,6 +2416,11 @@ extern PNG_EXPORT(png_uint_32,png_permit_mng_features) PNGARG((png_structp #define PNG_SELECT_READ 1 #define PNG_SELECT_WRITE 2 +/* For use in png_set_keep_unknown */ +#define PNG_HANDLE_CHUNK_AS_DEFAULT 0 +#define PNG_HANDLE_CHUNK_NEVER 1 +#define PNG_HANDLE_CHUNK_IF_SAFE 2 +#define PNG_HANDLE_CHUNK_ALWAYS 3 #if !defined(PNG_1_0_X) /* pngget.c */ @@ -2601,12 +2605,6 @@ extern PNG_EXPORT(png_uint_32,png_get_user_height_max) PNGARG((png_structp #define PNG_FLAG_STRIP_ERROR_TEXT 0x80000L #define PNG_FLAG_MALLOC_NULL_MEM_OK 0x100000L -/* For use in png_set_keep_unknown, png_handle_as_unknown */ -#define PNG_HANDLE_CHUNK_AS_DEFAULT 0 -#define PNG_HANDLE_CHUNK_NEVER 1 -#define PNG_HANDLE_CHUNK_IF_SAFE 2 -#define PNG_HANDLE_CHUNK_ALWAYS 3 - #define PNG_FLAG_CRC_ANCILLARY_MASK (PNG_FLAG_CRC_ANCILLARY_USE | \ PNG_FLAG_CRC_ANCILLARY_NOWARN) @@ -2618,14 +2616,22 @@ extern PNG_EXPORT(png_uint_32,png_get_user_height_max) PNGARG((png_structp /* save typing and make code easier to understand */ +#define PNG_COLOR_DIST(c1, c2) (abs((int)((c1).red) - (int)((c2).red)) + \ + abs((int)((c1).green) - (int)((c2).green)) + \ + abs((int)((c1).blue) - (int)((c2).blue))) + +/* Added to libpng-1.2.6 JB */ #define PNG_ROWBYTES(pixel_bits, width) \ ((pixel_bits) >= 8 ? \ ((width) * (((png_uint_32)(pixel_bits)) >> 3)) : \ (( ((width) * ((png_uint_32)(pixel_bits))) + 7) >> 3) ) -#define PNG_COLOR_DIST(c1, c2) (abs((int)((c1).red) - (int)((c2).red)) + \ - abs((int)((c1).green) - (int)((c2).green)) + \ - abs((int)((c1).blue) - (int)((c2).blue))) +/* PNG_OUT_OF_RANGE returns true if value is outside the range + ideal-delta..ideal+delta. Each argument is evaluated twice. + "ideal" and "delta" should be constants, normally simple + integers, "value" a variable. Added to libpng-1.2.6 JB */ +#define PNG_OUT_OF_RANGE(value, ideal, delta) \ + ( (value) < (ideal)-(delta) || (value) > (ideal)+(delta) ) /* variables declared in png.c - only it needs to define PNG_NO_EXTERN */ #if !defined(PNG_NO_EXTERN) || defined(PNG_ALWAYS_EXTERN) diff --git a/pngasmrd.h b/pngasmrd.h index 1143b20c..ab1963e1 100644 --- a/pngasmrd.h +++ b/pngasmrd.h @@ -1,6 +1,6 @@ /* pngasmrd.h - assembler version of utilities to read a PNG file * - * libpng 1.2.6rc2 - August 8, 2004 + * libpng 1.2.6rc3 - August 10, 2004 * For conditions of distribution and use, see copyright notice in png.h * Copyright (c) 2002-2004 Glenn Randers-Pehrson * diff --git a/pngconf.h b/pngconf.h index 259f451d..1cfce5f0 100644 --- a/pngconf.h +++ b/pngconf.h @@ -1,7 +1,7 @@ /* pngconf.h - machine configurable file for libpng * - * libpng version 1.2.6rc2 - August 8, 2004 + * libpng version 1.2.6rc3 - August 10, 2004 * For conditions of distribution and use, see copyright notice in png.h * Copyright (c) 1998-2004 Glenn Randers-Pehrson * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) diff --git a/pngerror.c b/pngerror.c index 60c14850..1b0c05f5 100644 --- a/pngerror.c +++ b/pngerror.c @@ -1,7 +1,7 @@ /* pngerror.c - stub functions for i/o and memory allocation * - * libpng version 1.2.6rc2 - August 8, 2004 + * libpng version 1.2.6rc3 - August 10, 2004 * For conditions of distribution and use, see copyright notice in png.h * Copyright (c) 1998-2004 Glenn Randers-Pehrson * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) diff --git a/pnggccrd.c b/pnggccrd.c index f4eadbac..94bb1380 100644 --- a/pnggccrd.c +++ b/pnggccrd.c @@ -6,7 +6,7 @@ * and http://www.intel.com/drg/pentiumII/appnotes/923/923.htm * for Intel's performance analysis of the MMX vs. non-MMX code. * - * libpng version 1.2.6rc2 - August 8, 2004 + * libpng version 1.2.6rc3 - August 10, 2004 * For conditions of distribution and use, see copyright notice in png.h * Copyright (c) 1998-2004 Glenn Randers-Pehrson * Copyright (c) 1998, Intel Corporation @@ -1773,8 +1773,8 @@ png_do_read_interlace(png_structp png_ptr) : "1" (sptr), // esi // input regs "2" (dp), // edi - "0" (width) // ecx -// doesn't work "i" (0x0000000000FFFFFFLL) // %1 (a.k.a. _const4) + "0" (width), // ecx + "rim" (_const4) // %1(?) (0x0000000000FFFFFFLL) #if 0 /* %mm0, ..., %mm4 not supported by gcc 2.7.2.3 or egcs 1.1 */ : "%mm0", "%mm1", "%mm2" // clobber list @@ -1817,7 +1817,8 @@ png_do_read_interlace(png_structp png_ptr) : "1" (sptr), // esi // input regs "2" (dp), // edi - "0" (width) // ecx + "0" (width), // ecx + "rim" (_const4) // (0x0000000000FFFFFFLL) #if 0 /* %mm0, ..., %mm2 not supported by gcc 2.7.2.3 or egcs 1.1 */ : "%mm0", "%mm1", "%mm2" // clobber list @@ -1871,7 +1872,9 @@ png_do_read_interlace(png_structp png_ptr) : "1" (sptr), // esi // input regs "2" (dp), // edi - "0" (width_mmx) // ecx + "0" (width_mmx), // ecx + "rim" (_const4), // 0x0000000000FFFFFFLL + "rim" (_const6) // 0x00000000000000FFLL #if 0 /* %mm0, ..., %mm3 not supported by gcc 2.7.2.3 or egcs 1.1 */ : "%mm0", "%mm1" // clobber list diff --git a/pngget.c b/pngget.c index 7449eb6d..1e01fa94 100644 --- a/pngget.c +++ b/pngget.c @@ -1,7 +1,7 @@ /* pngget.c - retrieval of values from info struct * - * libpng 1.2.6rc2 - August 8, 2004 + * libpng 1.2.6rc3 - August 10, 2004 * For conditions of distribution and use, see copyright notice in png.h * Copyright (c) 1998-2004 Glenn Randers-Pehrson * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) diff --git a/pngmem.c b/pngmem.c index 81c3e6a7..be99b8f1 100644 --- a/pngmem.c +++ b/pngmem.c @@ -1,7 +1,7 @@ /* pngmem.c - stub functions for memory allocation * - * libpng version 1.2.6rc2 - August 8, 2004 + * libpng version 1.2.6rc3 - August 10, 2004 * For conditions of distribution and use, see copyright notice in png.h * Copyright (c) 1998-2004 Glenn Randers-Pehrson * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) diff --git a/pngpread.c b/pngpread.c index fbf29930..77eeb1cb 100644 --- a/pngpread.c +++ b/pngpread.c @@ -1,7 +1,7 @@ /* pngpread.c - read a png file in push mode * - * libpng version 1.2.6rc2 - August 8, 2004 + * libpng version 1.2.6rc3 - August 10, 2004 * For conditions of distribution and use, see copyright notice in png.h * Copyright (c) 1998-2004 Glenn Randers-Pehrson * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) @@ -223,6 +223,41 @@ png_push_read_chunk(png_structp png_ptr, png_infop info_ptr) } png_handle_IHDR(png_ptr, info_ptr, png_ptr->push_length); } + else if (!png_memcmp(png_ptr->chunk_name, png_IEND, 4)) + { + if (png_ptr->push_length + 4 > png_ptr->buffer_size) + { + png_push_save_buffer(png_ptr); + return; + } + png_handle_IEND(png_ptr, info_ptr, png_ptr->push_length); + + png_ptr->process_mode = PNG_READ_DONE_MODE; + png_push_have_end(png_ptr, info_ptr); + } +#ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED + else if (png_handle_as_unknown(png_ptr, png_ptr->chunk_name)) + { + if (png_ptr->push_length + 4 > png_ptr->buffer_size) + { + png_push_save_buffer(png_ptr); + return; + } + if (!png_memcmp(png_ptr->chunk_name, png_IDAT, 4)) + png_ptr->mode |= PNG_HAVE_IDAT; + png_handle_unknown(png_ptr, info_ptr, png_ptr->push_length); + if (!png_memcmp(png_ptr->chunk_name, png_PLTE, 4)) + png_ptr->mode |= PNG_HAVE_PLTE; + else if (!png_memcmp(png_ptr->chunk_name, png_IDAT, 4)) + { + if (!(png_ptr->mode & PNG_HAVE_IHDR)) + png_error(png_ptr, "Missing IHDR before IDAT"); + else if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE && + !(png_ptr->mode & PNG_HAVE_PLTE)) + png_error(png_ptr, "Missing PLTE before IDAT"); + } + } +#endif else if (!png_memcmp(png_ptr->chunk_name, png_PLTE, 4)) { if (png_ptr->push_length + 4 > png_ptr->buffer_size) @@ -261,18 +296,6 @@ png_push_read_chunk(png_structp png_ptr, png_infop info_ptr) png_ptr->zstream.next_out = png_ptr->row_buf; return; } - else if (!png_memcmp(png_ptr->chunk_name, png_IEND, 4)) - { - if (png_ptr->push_length + 4 > png_ptr->buffer_size) - { - png_push_save_buffer(png_ptr); - return; - } - png_handle_IEND(png_ptr, info_ptr, png_ptr->push_length); - - png_ptr->process_mode = PNG_READ_DONE_MODE; - png_push_have_end(png_ptr, info_ptr); - } #if defined(PNG_READ_gAMA_SUPPORTED) else if (!png_memcmp(png_ptr->chunk_name, png_gAMA, 4)) { diff --git a/pngread.c b/pngread.c index 8bbf17d2..c463ec31 100644 --- a/pngread.c +++ b/pngread.c @@ -1,7 +1,7 @@ /* pngread.c - read a PNG file * - * libpng 1.2.6rc2 - August 8, 2004 + * libpng 1.2.6rc3 - August 10, 2004 * For conditions of distribution and use, see copyright notice in png.h * Copyright (c) 1998-2004 Glenn Randers-Pehrson * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) @@ -803,7 +803,7 @@ png_read_row(png_structp png_ptr, png_bytep row, png_bytep dsp_row) * not called png_set_interlace_handling(), the display_row buffer will * be ignored, so pass NULL to it. * - * [*] png_handle_alpha() does not exist yet, as of libpng version 1.2.6rc2 + * [*] png_handle_alpha() does not exist yet, as of libpng version 1.2.6rc3 */ void PNGAPI @@ -853,7 +853,7 @@ png_read_rows(png_structp png_ptr, png_bytepp row, * only call this function once. If you desire to have an image for * each pass of a interlaced image, use png_read_rows() instead. * - * [*] png_handle_alpha() does not exist yet, as of libpng version 1.2.6rc2 + * [*] png_handle_alpha() does not exist yet, as of libpng version 1.2.6rc3 */ void PNGAPI png_read_image(png_structp png_ptr, png_bytepp image) diff --git a/pngrio.c b/pngrio.c index e483101d..5af9265e 100644 --- a/pngrio.c +++ b/pngrio.c @@ -1,7 +1,7 @@ /* pngrio.c - functions for data input * - * libpng 1.2.6rc2 - August 8, 2004 + * libpng 1.2.6rc3 - August 10, 2004 * For conditions of distribution and use, see copyright notice in png.h * Copyright (c) 1998-2004 Glenn Randers-Pehrson * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) diff --git a/pngrtran.c b/pngrtran.c index f4dea7ae..ea7b3677 100644 --- a/pngrtran.c +++ b/pngrtran.c @@ -1,7 +1,7 @@ /* pngrtran.c - transforms the data in a row for PNG readers * - * libpng version 1.2.6rc2 - August 8, 2004 + * libpng version 1.2.6rc3 - August 10, 2004 * For conditions of distribution and use, see copyright notice in png.h * Copyright (c) 1998-2004 Glenn Randers-Pehrson * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) @@ -482,12 +482,14 @@ png_set_dither(png_structp png_ptr, png_colorp palette, for (ir = 0; ir < num_red; ir++) { - int dr = abs(ir - r); + /* int dr = abs(ir - r); */ + int dr = ((ir > r) ? ir - r : r - ir); int index_r = (ir << (PNG_DITHER_BLUE_BITS + PNG_DITHER_GREEN_BITS)); for (ig = 0; ig < num_green; ig++) { - int dg = abs(ig - g); + /* int dg = abs(ig - g); */ + int dg = ((ig > g) ? ig - g : g - ig); int dt = dr + dg; int dm = ((dr > dg) ? dr : dg); int index_g = index_r | (ig << PNG_DITHER_BLUE_BITS); @@ -495,7 +497,8 @@ png_set_dither(png_structp png_ptr, png_colorp palette, for (ib = 0; ib < num_blue; ib++) { int d_index = index_g | ib; - int db = abs(ib - b); + /* int db = abs(ib - b); */ + int db = ((ib > b) ? ib - b : b - ib); int dmax = ((dm > db) ? dm : db); int d = dmax + dt + db; diff --git a/pngrutil.c b/pngrutil.c index b96e9b14..2c875dad 100644 --- a/pngrutil.c +++ b/pngrutil.c @@ -1,6 +1,6 @@ /* pngrutil.c - utilities to read a PNG file * - * libpng version 1.2.6rc2 - August 8, 2004 + * libpng version 1.2.6rc3 - August 10, 2004 * For conditions of distribution and use, see copyright notice in png.h * Copyright (c) 1998-2004 Glenn Randers-Pehrson * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) @@ -620,7 +620,7 @@ png_handle_gAMA(png_structp png_ptr, png_infop info_ptr, png_uint_32 length) #if defined(PNG_READ_sRGB_SUPPORTED) if (info_ptr->valid & PNG_INFO_sRGB) - if(igamma < 45000L || igamma > 46000L) + if (PNG_OUT_OF_RANGE(igamma, 45500L, 500)) { png_warning(png_ptr, "Ignoring incorrect gAMA value when sRGB is also present"); @@ -833,14 +833,14 @@ png_handle_cHRM(png_structp png_ptr, png_infop info_ptr, png_uint_32 length) #if defined(PNG_READ_sRGB_SUPPORTED) if (info_ptr->valid & PNG_INFO_sRGB) { - if (abs((png_int_32)(int_x_white - 31270L)) > 1000 || - abs((png_int_32)(int_y_white - 32900L)) > 1000 || - abs((png_int_32)(int_x_red - 64000L)) > 1000 || - abs((png_int_32)(int_y_red - 33000L)) > 1000 || - abs((png_int_32)(int_x_green - 30000L)) > 1000 || - abs((png_int_32)(int_y_green - 60000L)) > 1000 || - abs((png_int_32)(int_x_blue - 15000L)) > 1000 || - abs((png_int_32)(int_y_blue - 6000L)) > 1000) + if (PNG_OUT_OF_RANGE(int_x_white, 31270, 1000) || + PNG_OUT_OF_RANGE(int_y_white, 32900, 1000) || + PNG_OUT_OF_RANGE(int_x_red, 64000L, 1000) || + PNG_OUT_OF_RANGE(int_y_red, 33000, 1000) || + PNG_OUT_OF_RANGE(int_x_green, 30000, 1000) || + PNG_OUT_OF_RANGE(int_y_green, 60000L, 1000) || + PNG_OUT_OF_RANGE(int_x_blue, 15000, 1000) || + PNG_OUT_OF_RANGE(int_y_blue, 6000, 1000)) { png_warning(png_ptr, @@ -936,7 +936,7 @@ png_handle_sRGB(png_structp png_ptr, png_infop info_ptr, png_uint_32 length) igamma=(png_fixed_point)(info_ptr->gamma * 100000.); # endif #endif - if(igamma < 45000L || igamma > 46000L) + if (PNG_OUT_OF_RANGE(igamma, 45500L, 500)) { png_warning(png_ptr, "Ignoring incorrect gAMA value when sRGB is also present"); @@ -956,14 +956,14 @@ png_handle_sRGB(png_structp png_ptr, png_infop info_ptr, png_uint_32 length) #ifdef PNG_READ_cHRM_SUPPORTED #ifdef PNG_FIXED_POINT_SUPPORTED if (info_ptr->valid & PNG_INFO_cHRM) - if (abs((png_int_32)(info_ptr->int_x_white - 31270L)) > 1000 || - abs((png_int_32)(info_ptr->int_y_white - 32900L)) > 1000 || - abs((png_int_32)(info_ptr->int_x_red - 64000L)) > 1000 || - abs((png_int_32)(info_ptr->int_y_red - 33000L)) > 1000 || - abs((png_int_32)(info_ptr->int_x_green - 30000L)) > 1000 || - abs((png_int_32)(info_ptr->int_y_green - 60000L)) > 1000 || - abs((png_int_32)(info_ptr->int_x_blue - 15000L)) > 1000 || - abs((png_int_32)(info_ptr->int_y_blue - 6000L)) > 1000) + if (PNG_OUT_OF_RANGE(info_ptr->int_x_white, 31270, 1000) || + PNG_OUT_OF_RANGE(info_ptr->int_y_white, 32900, 1000) || + PNG_OUT_OF_RANGE(info_ptr->int_x_red, 64000L, 1000) || + PNG_OUT_OF_RANGE(info_ptr->int_y_red, 33000, 1000) || + PNG_OUT_OF_RANGE(info_ptr->int_x_green, 30000, 1000) || + PNG_OUT_OF_RANGE(info_ptr->int_y_green, 60000L, 1000) || + PNG_OUT_OF_RANGE(info_ptr->int_x_blue, 15000, 1000) || + PNG_OUT_OF_RANGE(info_ptr->int_y_blue, 6000, 1000)) { png_warning(png_ptr, "Ignoring incorrect cHRM value when sRGB is also present"); diff --git a/pngset.c b/pngset.c index d4f70cc0..378effc3 100644 --- a/pngset.c +++ b/pngset.c @@ -1,7 +1,7 @@ /* pngset.c - storage of image information into info struct * - * libpng 1.2.6rc2 - August 8, 2004 + * libpng 1.2.6rc3 - August 10, 2004 * For conditions of distribution and use, see copyright notice in png.h * Copyright (c) 1998-2004 Glenn Randers-Pehrson * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) diff --git a/pngtest.c b/pngtest.c index fd90146e..3b9351b4 100644 --- a/pngtest.c +++ b/pngtest.c @@ -1,7 +1,7 @@ /* pngtest.c - a simple test program to test libpng * - * libpng 1.2.6rc2 - August 8, 2004 + * libpng 1.2.6rc3 - August 10, 2004 * For conditions of distribution and use, see copyright notice in png.h * Copyright (c) 1998-2004 Glenn Randers-Pehrson * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) @@ -470,7 +470,7 @@ pngtest_error(png_structp png_ptr, png_const_charp message) /* END of code to validate stdio-free compilation */ /* START of code to validate memory allocation and deallocation */ -#ifdef PNG_USER_MEM_SUPPORTED +#if defined(PNG_USER_MEM_SUPPORTED) && defined(PNG_DEBUG) /* Allocate memory. For reasonable files, size should never exceed 64K. However, zlib may allocate more then 64K if you don't tell @@ -594,7 +594,7 @@ png_debug_free(png_structp png_ptr, png_voidp ptr) png_free_default(png_ptr, ptr); ptr=NULL; } -#endif /* PNG_USER_MEM_SUPPORTED */ +#endif /* PNG_USER_MEM_SUPPORTED && PNG_DEBUG */ /* END of code to test memory allocation/deallocation */ /* Test one file */ @@ -656,7 +656,7 @@ test_one_file(PNG_CONST char *inname, PNG_CONST char *outname) } png_debug(0, "Allocating read and write structures\n"); -#ifdef PNG_USER_MEM_SUPPORTED +#if defined(PNG_USER_MEM_SUPPORTED) && defined(PNG_DEBUG) read_ptr = png_create_read_struct_2(PNG_LIBPNG_VER_STRING, png_voidp_NULL, png_error_ptr_NULL, png_error_ptr_NULL, png_voidp_NULL, (png_malloc_ptr)png_debug_malloc, (png_free_ptr)png_debug_free); @@ -669,7 +669,7 @@ test_one_file(PNG_CONST char *inname, PNG_CONST char *outname) pngtest_warning); #endif #ifdef PNG_WRITE_SUPPORTED -#ifdef PNG_USER_MEM_SUPPORTED +#if defined(PNG_USER_MEM_SUPPORTED) && defined(PNG_DEBUG) write_ptr = png_create_write_struct_2(PNG_LIBPNG_VER_STRING, png_voidp_NULL, png_error_ptr_NULL, png_error_ptr_NULL, png_voidp_NULL, (png_malloc_ptr)png_debug_malloc, (png_free_ptr)png_debug_free); @@ -1391,7 +1391,7 @@ main(int argc, char *argv[]) if (multiple) { int i; -#ifdef PNG_USER_MEM_SUPPORTED +#if defined(PNG_USER_MEM_SUPPORTED) && defined(PNG_DEBUG) int allocation_now = current_allocation; #endif for (i=2; i