michael@0: #if 0 michael@0: CHANGES - changes for libpng michael@0: michael@0: Version 0.2 michael@0: added reader into png.h michael@0: fixed small problems in stub file michael@0: michael@0: Version 0.3 michael@0: added pull reader michael@0: split up pngwrite.c to several files michael@0: added pnglib.txt michael@0: added example.c michael@0: cleaned up writer, adding a few new transformations michael@0: fixed some bugs in writer michael@0: interfaced with zlib 0.5 michael@0: added K&R support michael@0: added check for 64 KB blocks for 16-bit machines michael@0: michael@0: Version 0.4 michael@0: cleaned up code and commented code michael@0: simplified time handling into png_time michael@0: created png_color_16 and png_color_8 to handle color needs michael@0: cleaned up color type defines michael@0: fixed various bugs michael@0: made various names more consistent michael@0: interfaced with zlib 0.71 michael@0: cleaned up zTXt reader and writer (using zlib's Reset functions) michael@0: split transformations into pngrtran.c and pngwtran.c michael@0: michael@0: Version 0.5 michael@0: interfaced with zlib 0.8 michael@0: fixed many reading and writing bugs michael@0: saved using 3 spaces instead of tabs michael@0: michael@0: Version 0.6 michael@0: added png_large_malloc() and png_large_free() michael@0: added png_size_t michael@0: cleaned up some compiler warnings michael@0: added png_start_read_image() michael@0: michael@0: Version 0.7 michael@0: cleaned up lots of bugs michael@0: finished dithering and other stuff michael@0: added test program michael@0: changed name from pnglib to libpng michael@0: michael@0: Version 0.71 [June, 1995] michael@0: changed pngtest.png for zlib 0.93 michael@0: fixed error in libpng.txt and example.c michael@0: michael@0: Version 0.8 michael@0: cleaned up some bugs michael@0: added png_set_filler() michael@0: split up pngstub.c into pngmem.c, pngio.c, and pngerror.c michael@0: added #define's to remove unwanted code michael@0: moved png_info_init() to png.c michael@0: added old_size into png_realloc() michael@0: added functions to manually set filtering and compression info michael@0: changed compression parameters based on image type michael@0: optimized filter selection code michael@0: added version info michael@0: changed external functions passing floats to doubles (k&r problems?) michael@0: put all the configurable stuff in pngconf.h michael@0: enabled png_set_shift to work with paletted images on read michael@0: added png_read_update_info() - updates info structure with transformations michael@0: michael@0: Version 0.81 [August, 1995] michael@0: incorporated Tim Wegner's medium model code (thanks, Tim) michael@0: michael@0: Version 0.82 [September, 1995] michael@0: [unspecified changes] michael@0: michael@0: Version 0.85 [December, 1995] michael@0: added more medium model code (almost everything's a far) michael@0: added i/o, error, and memory callback functions michael@0: fixed some bugs (16-bit, 4-bit interlaced, etc.) michael@0: added first run progressive reader (barely tested) michael@0: michael@0: Version 0.86 [January, 1996] michael@0: fixed bugs michael@0: improved documentation michael@0: michael@0: Version 0.87 [January, 1996] michael@0: fixed medium model bugs michael@0: fixed other bugs introduced in 0.85 and 0.86 michael@0: added some minor documentation michael@0: michael@0: Version 0.88 [January, 1996] michael@0: fixed progressive bugs michael@0: replaced tabs with spaces michael@0: cleaned up documentation michael@0: added callbacks for read/write and warning/error functions michael@0: michael@0: Version 0.89 [July, 1996] michael@0: Added new initialization API to make libpng work better with shared libs michael@0: we now have png_create_read_struct(), png_create_write_struct(), michael@0: png_create_info_struct(), png_destroy_read_struct(), and michael@0: png_destroy_write_struct() instead of the separate calls to michael@0: malloc and png_read_init(), png_info_init(), and png_write_init() michael@0: Changed warning/error callback functions to fix bug - this means you michael@0: should use the new initialization API if you were using the old michael@0: png_set_message_fn() calls, and that the old API no longer exists michael@0: so that people are aware that they need to change their code michael@0: Changed filter selection API to allow selection of multiple filters michael@0: since it didn't work in previous versions of libpng anyways michael@0: Optimized filter selection code michael@0: Fixed png_set_background() to allow using an arbitrary RGB color for michael@0: paletted images michael@0: Fixed gamma and background correction for paletted images, so michael@0: png_correct_palette is not needed unless you are correcting an michael@0: external palette (you will need to #define PNG_CORRECT_PALETTE_SUPPORTED michael@0: in pngconf.h) - if nobody uses this, it may disappear in the future. michael@0: Fixed bug with Borland 64K memory allocation (Alexander Lehmann) michael@0: Fixed bug in interlace handling (Smarasderagd, I think) michael@0: Added more error checking for writing and image to reduce invalid files michael@0: Separated read and write functions so that they won't both be linked michael@0: into a binary when only reading or writing functionality is used michael@0: New pngtest image also has interlacing and zTXt michael@0: Updated documentation to reflect new API michael@0: michael@0: Version 0.90 [January, 1997] michael@0: Made CRC errors/warnings on critical and ancillary chunks configurable michael@0: libpng will use the zlib CRC routines by (compile-time) default michael@0: Changed DOS small/medium model memory support - needs zlib 1.04 (Tim Wegner) michael@0: Added external C++ wrapper statements to png.h (Gilles Dauphin) michael@0: Allow PNG file to be read when some or all of file signature has already michael@0: been read from the beginning of the stream. ****This affects the size michael@0: of info_struct and invalidates all programs that use a shared libpng**** michael@0: Fixed png_filler() declarations michael@0: Fixed? background color conversions michael@0: Fixed order of error function pointers to match documentation michael@0: Current chunk name is now available in png_struct to reduce the number michael@0: of nearly identical error messages (will simplify multi-lingual michael@0: support when available) michael@0: Try to get ready for unknown-chunk callback functions: michael@0: - previously read critical chunks are flagged, so the chunk handling michael@0: routines can determine if the chunk is in the right place michael@0: - all chunk handling routines have the same prototypes, so we will michael@0: be able to handle all chunks via a callback mechanism michael@0: Try to fix Linux "setjmp" buffer size problems michael@0: Removed png_large_malloc, png_large_free, and png_realloc functions. michael@0: michael@0: Version 0.95 [March, 1997] michael@0: Fixed bug in pngwutil.c allocating "up_row" twice and "avg_row" never michael@0: Fixed bug in PNG file signature compares when start != 0 michael@0: Changed parameter type of png_set_filler(...filler...) from png_byte michael@0: to png_uint_32 michael@0: Added test for MACOS to ensure that both math.h and fp.h are not #included michael@0: Added macros for libpng to be compiled as a Windows DLL (Andreas Kupries) michael@0: Added "packswap" transformation, which changes the endianness of michael@0: packed-pixel bytes (Kevin Bracey) michael@0: Added "strip_alpha" transformation, which removes the alpha channel of michael@0: input images without using it (not necessarily a good idea) michael@0: Added "swap_alpha" transformation, which puts the alpha channel in front michael@0: of the color bytes instead of after michael@0: Removed all implicit variable tests which assume NULL == 0 (I think) michael@0: Changed several variables to "png_size_t" to show 16/32-bit limitations michael@0: Added new pCAL chunk read/write support michael@0: Added experimental filter selection weighting (Greg Roelofs) michael@0: Removed old png_set_rgbx() and png_set_xrgb() functions that have been michael@0: obsolete for about 2 years now (use png_set_filler() instead) michael@0: Added macros to read 16- and 32-bit ints directly from buffer, to be michael@0: used only on those systems that support it (namely PowerPC and 680x0) michael@0: With some testing, this may become the default for MACOS/PPC systems. michael@0: Only calculate CRC on data if we are going to use it michael@0: Added macros for zTXt compression type PNG_zTXt_COMPRESSION_??? michael@0: Added macros for simple libpng debugging output selectable at compile time michael@0: Removed PNG_READ_END_MODE in progressive reader (Smarasderagd) michael@0: More description of info_struct in libpng.txt and png.h michael@0: More instructions in example.c michael@0: More chunk types tested in pngtest.c michael@0: Renamed pngrcb.c to pngset.c, and all png_read_ functions to be michael@0: png_set_. We now have corresponding png_get_ michael@0: functions in pngget.c to get information in info_ptr. This isolates michael@0: the application from the internal organization of png_info_struct michael@0: (good for shared library implementations). michael@0: michael@0: Version 0.96 [May, 1997] michael@0: Fixed serious bug with < 8bpp images introduced in 0.95 michael@0: Fixed 256-color transparency bug (Greg Roelofs) michael@0: Fixed up documentation (Greg Roelofs, Laszlo Nyul) michael@0: Fixed "error" in pngconf.h for Linux setjmp() behavior michael@0: Fixed DOS medium model support (Tim Wegner) michael@0: Fixed png_check_keyword() for case with error in static string text michael@0: Added read of CRC after IEND chunk for embedded PNGs (Laszlo Nyul) michael@0: Added typecasts to quiet compiler errors michael@0: Added more debugging info michael@0: michael@0: Version 0.97 [January, 1998] michael@0: Removed PNG_USE_OWN_CRC capability michael@0: Relocated png_set_crc_action from pngrutil.c to pngrtran.c michael@0: Fixed typecasts of "new_key", etc. (Andreas Dilger) michael@0: Added RFC 1152 [sic] date support michael@0: Fixed bug in gamma handling of 4-bit grayscale michael@0: Added 2-bit grayscale gamma handling (Glenn R-P) michael@0: Added more typecasts. 65536L becomes (png_uint_32)65536L, etc. (Glenn R-P) michael@0: Minor corrections in libpng.txt michael@0: Added simple sRGB support (Glenn R-P) michael@0: Easier conditional compiling, e.g., michael@0: define PNG_READ/WRITE_NOT_FULLY_SUPPORTED; michael@0: all configurable options can be selected from command-line instead michael@0: of having to edit pngconf.h (Glenn R-P) michael@0: Fixed memory leak in pngwrite.c (free info_ptr->text) (Glenn R-P) michael@0: Added more conditions for png_do_background, to avoid changing michael@0: black pixels to background when a background is supplied and michael@0: no pixels are transparent michael@0: Repaired PNG_NO_STDIO behavior michael@0: Tested NODIV support and made it default behavior (Greg Roelofs) michael@0: Added "-m" option and PNGTEST_DEBUG_MEMORY to pngtest (John Bowler) michael@0: Regularized version numbering scheme and bumped shared-library major michael@0: version number to 2 to avoid problems with libpng 0.89 apps michael@0: (Greg Roelofs) michael@0: michael@0: Version 0.98 [January, 1998] michael@0: Cleaned up some typos in libpng.txt and in code documentation michael@0: Fixed memory leaks in pCAL chunk processing (Glenn R-P and John Bowler) michael@0: Cosmetic change "display_gamma" to "screen_gamma" in pngrtran.c michael@0: Changed recommendation about file_gamma for PC images to .51 from .45, michael@0: in example.c and libpng.txt, added comments to distinguish between michael@0: screen_gamma, viewing_gamma, and display_gamma. michael@0: Changed all references to RFC1152 to read RFC1123 and changed the michael@0: PNG_TIME_RFC1152_SUPPORTED macro to PNG_TIME_RFC1123_SUPPORTED michael@0: Added png_invert_alpha capability (Glenn R-P -- suggestion by Jon Vincent) michael@0: Changed srgb_intent from png_byte to int to avoid compiler bugs michael@0: michael@0: Version 0.99 [January 30, 1998] michael@0: Free info_ptr->text instead of end_info_ptr->text in pngread.c (John Bowler) michael@0: Fixed a longstanding "packswap" bug in pngtrans.c michael@0: Fixed some inconsistencies in pngconf.h that prevented compiling with michael@0: PNG_READ_GAMMA_SUPPORTED and PNG_READ_hIST_SUPPORTED undefined michael@0: Fixed some typos and made other minor rearrangement of libpng.txt (Andreas) michael@0: Changed recommendation about file_gamma for PC images to .50 from .51 in michael@0: example.c and libpng.txt, and changed file_gamma for sRGB images to .45 michael@0: Added a number of functions to access information from the png structure michael@0: png_get_image_height(), etc. (Glenn R-P, suggestion by Brad Pettit) michael@0: Added TARGET_MACOS similar to zlib-1.0.8 michael@0: Define PNG_ALWAYS_EXTERN when __MWERKS__ && WIN32 are defined michael@0: Added type casting to all png_malloc() function calls michael@0: michael@0: Version 0.99a [January 31, 1998] michael@0: Added type casts and parentheses to all returns that return a value.(Tim W.) michael@0: michael@0: Version 0.99b [February 4, 1998] michael@0: Added type cast png_uint_32 on malloc function calls where needed. michael@0: Changed type of num_hist from png_uint_32 to int (same as num_palette). michael@0: Added checks for rowbytes overflow, in case png_size_t is less than 32 bits. michael@0: Renamed makefile.elf to makefile.lnx. michael@0: michael@0: Version 0.99c [February 7, 1998] michael@0: More type casting. Removed erroneous overflow test in pngmem.c. michael@0: Added png_buffered_memcpy() and png_buffered_memset(), apply them to rowbytes. michael@0: Added UNIX manual pages libpng.3 (incorporating libpng.txt) and png.5. michael@0: michael@0: Version 0.99d [February 11, 1998] michael@0: Renamed "far_to_near()" "png_far_to_near()" michael@0: Revised libpng.3 michael@0: Version 99c "buffered" operations didn't work as intended. Replaced them michael@0: with png_memcpy_check() and png_memset_check(). michael@0: Added many "if (png_ptr == NULL) return" to quell compiler warnings about michael@0: unused png_ptr, mostly in pngget.c and pngset.c. michael@0: Check for overlength tRNS chunk present when indexed-color PLTE is read. michael@0: Cleaned up spelling errors in libpng.3/libpng.txt michael@0: Corrected a problem with png_get_tRNS() which returned undefined trans array michael@0: michael@0: Version 0.99e [February 28, 1998] michael@0: Corrected png_get_tRNS() again. michael@0: Add parentheses for easier reading of pngget.c, fixed "||" should be "&&". michael@0: Touched up example.c to make more of it compileable, although the entire michael@0: file still can't be compiled (Willem van Schaik) michael@0: Fixed a bug in png_do_shift() (Bryan Tsai) michael@0: Added a space in png.h prototype for png_write_chunk_start() michael@0: Replaced pngtest.png with one created with zlib 1.1.1 michael@0: Changed pngtest to report PASS even when file size is different (Jean-loup G.) michael@0: Corrected some logic errors in png_do_invert_alpha() (Chris Patterson) michael@0: michael@0: Version 0.99f [March 5, 1998] michael@0: Corrected a bug in pngpread() introduced in version 99c (Kevin Bracey) michael@0: Moved makefiles into a "scripts" directory, and added INSTALL instruction file michael@0: Added makefile.os2 and pngos2.def (A. Zabolotny) and makefile.s2x (W. Sebok) michael@0: Added pointers to "note on libpng versions" in makefile.lnx and README michael@0: Added row callback feature when reading and writing nonprogressive rows michael@0: and added a test of this feature in pngtest.c michael@0: Added user transform callbacks, with test of the feature in pngtest.c michael@0: michael@0: Version 0.99g [March 6, 1998, morning] michael@0: Minor changes to pngtest.c to suppress compiler warnings. michael@0: Removed "beta" language from documentation. michael@0: michael@0: Version 0.99h [March 6, 1998, evening] michael@0: Minor changes to previous minor changes to pngtest.c michael@0: Changed PNG_READ_NOT_FULLY_SUPPORTED to PNG_READ_TRANSFORMS_NOT_SUPPORTED michael@0: and added PNG_PROGRESSIVE_READ_NOT_SUPPORTED macro michael@0: Added user transform capability michael@0: michael@0: Version 1.00 [March 7, 1998] michael@0: Changed several typedefs in pngrutil.c michael@0: Added makefile.wat (Pawel Mrochen), updated makefile.tc3 (Willem van Schaik) michael@0: Replaced "while(1)" with "for(;;)" michael@0: Added PNGARG() to prototypes in pngtest.c and removed some prototypes michael@0: Updated some of the makefiles (Tom Lane) michael@0: Changed some typedefs (s_start, etc.) in pngrutil.c michael@0: Fixed dimensions of "short_months" array in pngwrite.c michael@0: Replaced ansi2knr.c with the one from jpeg-v6 michael@0: michael@0: Version 1.0.0 [March 8, 1998] michael@0: Changed name from 1.00 to 1.0.0 (Adam Costello) michael@0: Added smakefile.ppc (with SCOPTIONS.ppc) for Amiga PPC (Andreas Kleinert) michael@0: michael@0: Version 1.0.0a [March 9, 1998] michael@0: Fixed three bugs in pngrtran.c to make gamma+background handling consistent michael@0: (Greg Roelofs) michael@0: Changed format of the PNG_LIBPNG_VER integer to xyyzz instead of xyz michael@0: for major, minor, and bugfix releases. This is 10001. (Adam Costello, michael@0: Tom Lane) michael@0: Make months range from 1-12 in png_convert_to_rfc1123 michael@0: michael@0: Version 1.0.0b [March 13, 1998] michael@0: Quieted compiler complaints about two empty "for" loops in pngrutil.c michael@0: Minor changes to makefile.s2x michael@0: Removed #ifdef/#endif around a png_free() in pngread.c michael@0: michael@0: Version 1.0.1 [March 14, 1998] michael@0: Changed makefile.s2x to reduce security risk of using a relative pathname michael@0: Fixed some typos in the documentation (Greg). michael@0: Fixed a problem with value of "channels" returned by png_read_update_info() michael@0: michael@0: Version 1.0.1a [April 21, 1998] michael@0: Optimized Paeth calculations by replacing abs() function calls with intrinsics michael@0: plus other loop optimizations. Improves avg decoding speed by about 20%. michael@0: Commented out i386istic "align" compiler flags in makefile.lnx. michael@0: Reduced the default warning level in some makefiles, to make them consistent. michael@0: Removed references to IJG and JPEG in the ansi2knr.c copyright statement. michael@0: Fixed a bug in png_do_strip_filler with XXRRGGBB => RRGGBB transformation. michael@0: Added grayscale and 16-bit capability to png_do_read_filler(). michael@0: Fixed a bug in pngset.c, introduced in version 0.99c, that sets rowbytes michael@0: too large when writing an image with bit_depth < 8 (Bob Dellaca). michael@0: Corrected some bugs in the experimental weighted filtering heuristics. michael@0: Moved a misplaced pngrutil code block that truncates tRNS if it has more michael@0: than num_palette entries -- test was done before num_palette was defined. michael@0: Fixed a png_convert_to_rfc1123() bug that converts day 31 to 0 (Steve Eddins). michael@0: Changed compiler flags in makefile.wat for better optimization michael@0: (Pawel Mrochen). michael@0: michael@0: Version 1.0.1b [May 2, 1998] michael@0: Relocated png_do_gray_to_rgb() within png_do_read_transformations() (Greg). michael@0: Relocated the png_composite macros from pngrtran.c to png.h (Greg). michael@0: Added makefile.sco (contributed by Mike Hopkirk). michael@0: Fixed two bugs (missing definitions of "istop") introduced in libpng-1.0.1a. michael@0: Fixed a bug in pngrtran.c that would set channels=5 under some circumstances. michael@0: More work on the Paeth-filtering, achieving imperceptible speedup michael@0: (A Kleinert). michael@0: More work on loop optimization which may help when compiled with C++ michael@0: compilers. michael@0: Added warnings when people try to use transforms they've defined out. michael@0: Collapsed 4 "i" and "c" loops into single "i" loops in pngrtran and pngwtran. michael@0: Revised paragraph about png_set_expand() in libpng.txt and libpng.3 (Greg) michael@0: michael@0: Version 1.0.1c [May 11, 1998] michael@0: Fixed a bug in pngrtran.c (introduced in libpng-1.0.1a) where the masks for michael@0: filler bytes should have been 0xff instead of 0xf. michael@0: Added max_pixel_depth=32 in pngrutil.c when using FILLER with palette images. michael@0: Moved PNG_WRITE_WEIGHTED_FILTER_SUPPORTED and PNG_WRITE_FLUSH_SUPPORTED michael@0: out of the PNG_WRITE_TRANSFORMS_NOT_SUPPORTED block of pngconf.h michael@0: Added "PNG_NO_WRITE_TRANSFORMS" etc., as alternatives for *_NOT_SUPPORTED, michael@0: for consistency, in pngconf.h michael@0: Added individual "ifndef PNG_NO_[CAPABILITY]" in pngconf.h to make it easier michael@0: to remove unwanted capabilities via the compile line michael@0: Made some corrections to grammar (which, it's) in documentation (Greg). michael@0: Corrected example.c, use of row_pointers in png_write_image(). michael@0: michael@0: Version 1.0.1d [May 24, 1998] michael@0: Corrected several statements that used side effects illegally in pngrutil.c michael@0: and pngtrans.c, that were introduced in version 1.0.1b michael@0: Revised png_read_rows() to avoid repeated if-testing for NULL (A Kleinert) michael@0: More corrections to example.c, use of row_pointers in png_write_image() michael@0: and png_read_rows(). michael@0: Added pngdll.mak and pngdef.pas to scripts directory, contributed by michael@0: Bob Dellaca, to make a png32bd.dll with Borland C++ 4.5 michael@0: Fixed error in example.c with png_set_text: num_text is 3, not 2 (Guido V.) michael@0: Changed several loops from count-down to count-up, for consistency. michael@0: michael@0: Version 1.0.1e [June 6, 1998] michael@0: Revised libpng.txt and libpng.3 description of png_set_read|write_fn(), and michael@0: added warnings when people try to set png_read_fn and png_write_fn in michael@0: the same structure. michael@0: Added a test such that png_do_gamma will be done when num_trans==0 michael@0: for truecolor images that have defined a background. This corrects an michael@0: error that was introduced in libpng-0.90 that can cause gamma processing michael@0: to be skipped. michael@0: Added tests in png.h to include "trans" and "trans_values" in structures michael@0: when PNG_READ_BACKGROUND_SUPPORTED or PNG_READ_EXPAND_SUPPORTED is defined. michael@0: Add png_free(png_ptr->time_buffer) in png_destroy_read_struct() michael@0: Moved png_convert_to_rfc_1123() from pngwrite.c to png.c michael@0: Added capability for user-provided malloc_fn() and free_fn() functions, michael@0: and revised pngtest.c to demonstrate their use, replacing the michael@0: PNGTEST_DEBUG_MEM feature. michael@0: Added makefile.w32, for Microsoft C++ 4.0 and later (Tim Wegner). michael@0: michael@0: Version 1.0.2 [June 14, 1998] michael@0: Fixed two bugs in makefile.bor . michael@0: michael@0: Version 1.0.2a [December 30, 1998] michael@0: Replaced and extended code that was removed from png_set_filler() in 1.0.1a. michael@0: Fixed a bug in png_do_filler() that made it fail to write filler bytes in michael@0: the left-most pixel of each row (Kevin Bracey). michael@0: Changed "static pngcharp tIME_string" to "static char tIME_string[30]" michael@0: in pngtest.c (Duncan Simpson). michael@0: Fixed a bug in pngtest.c that caused pngtest to try to write a tIME chunk michael@0: even when no tIME chunk was present in the source file. michael@0: Fixed a problem in pngrutil.c: gray_to_rgb didn't always work with 16-bit. michael@0: Fixed a problem in png_read_push_finish_row(), which would not skip some michael@0: passes that it should skip, for images that are less than 3 pixels high. michael@0: Interchanged the order of calls to png_do_swap() and png_do_shift() michael@0: in pngwtran.c (John Cromer). michael@0: Added #ifdef PNG_DEBUG/#endif surrounding use of PNG_DEBUG in png.h . michael@0: Changed "bad adaptive filter type" from error to warning in pngrutil.c . michael@0: Fixed a documentation error about default filtering with 8-bit indexed-color. michael@0: Separated the PNG_NO_STDIO macro into PNG_NO_STDIO and PNG_NO_CONSOLE_IO michael@0: (L. Peter Deutsch). michael@0: Added png_set_rgb_to_gray() and png_get_rgb_to_gray_status() functions. michael@0: Added png_get_copyright() and png_get_header_version() functions. michael@0: Revised comments on png_set_progressive_read_fn() in libpng.txt and example.c michael@0: Added information about debugging in libpng.txt and libpng.3 . michael@0: Changed "ln -sf" to "ln -s -f" in makefile.s2x, makefile.lnx, and michael@0: makefile.sco. michael@0: Removed lines after Dynamic Dependencies" in makefile.aco . michael@0: Revised makefile.dec to make a shared library (Jeremie Petit). michael@0: Removed trailing blanks from all files. michael@0: michael@0: Version 1.0.2a [January 6, 1999] michael@0: Removed misplaced #endif and #ifdef PNG_NO_EXTERN near the end of png.h michael@0: Added "if" tests to silence complaints about unused png_ptr in png.h and png.c michael@0: Changed "check_if_png" function in example.c to return true (nonzero) if PNG. michael@0: Changed libpng.txt to demonstrate png_sig_cmp() instead of png_check_sig() michael@0: which is obsolete. michael@0: michael@0: Version 1.0.3 [January 14, 1999] michael@0: Added makefile.hux, for Hewlett Packard HPUX 10.20 and 11.00 (Jim Rice) michael@0: Added a statement of Y2K compliance in png.h, libpng.3, and Y2KINFO. michael@0: michael@0: Version 1.0.3a [August 12, 1999] michael@0: Added check for PNG_READ_INTERLACE_SUPPORTED in pngread.c; issue a warning michael@0: if an attempt is made to read an interlaced image when it's not supported. michael@0: Added check if png_ptr->trans is defined before freeing it in pngread.c michael@0: Modified the Y2K statement to include versions back to version 0.71 michael@0: Fixed a bug in the check for valid IHDR bit_depth/color_types in pngrutil.c michael@0: Modified makefile.wat (added -zp8 flag, ".symbolic", changed some comments) michael@0: Replaced leading blanks with tab characters in makefile.hux michael@0: Changed "dworkin.wustl.edu" to "ccrc.wustl.edu" in various documents. michael@0: Changed (float)red and (float)green to (double)red, (double)green michael@0: in png_set_rgb_to_gray() to avoid "promotion" problems in AIX. michael@0: Fixed a bug in pngconf.h that omitted when PNG_DEBUG==0 (K Bracey). michael@0: Reformatted libpng.3 and libpngpf.3 with proper fonts (script by J. vanZandt). michael@0: Updated documentation to refer to the PNG-1.2 specification. michael@0: Removed ansi2knr.c and left pointers to the latest source for ansi2knr.c michael@0: in makefile.knr, INSTALL, and README (L. Peter Deutsch) michael@0: Fixed bugs in calculation of the length of rowbytes when adding alpha michael@0: channels to 16-bit images, in pngrtran.c (Chris Nokleberg) michael@0: Added function png_set_user_transform_info() to store user_transform_ptr, michael@0: user_depth, and user_channels into the png_struct, and a function michael@0: png_get_user_transform_ptr() to retrieve the pointer (Chris Nokleberg) michael@0: Added function png_set_empty_plte_permitted() to make libpng useable michael@0: in MNG applications. michael@0: Corrected the typedef for png_free_ptr in png.h (Jesse Jones). michael@0: Correct gamma with srgb is 45455 instead of 45000 in pngrutil.c, to be michael@0: consistent with PNG-1.2, and allow variance of 500 before complaining. michael@0: Added assembler code contributed by Intel in file pngvcrd.c and modified michael@0: makefile.w32 to use it (Nirav Chhatrapati, INTEL Corporation, michael@0: Gilles Vollant) michael@0: Changed "ln -s -f" to "ln -f -s" in the makefiles to make Solaris happy. michael@0: Added some aliases for png_set_expand() in pngrtran.c, namely michael@0: png_set_expand_PLTE(), png_set_expand_depth(), and png_set_expand_tRNS() michael@0: (Greg Roelofs, in "PNG: The Definitive Guide"). michael@0: Added makefile.beo for BEOS on X86, contributed by Sander Stok. michael@0: michael@0: Version 1.0.3b [August 26, 1999] michael@0: Replaced 2147483647L several places with PNG_MAX_UINT macro, defined in png.h michael@0: Changed leading blanks to tabs in all makefiles. michael@0: Define PNG_USE_PNGVCRD in makefile.w32, to get MMX assembler code. michael@0: Made alternate versions of png_set_expand() in pngrtran.c, namely michael@0: png_set_gray_1_2_4_to_8, png_set_palette_to_rgb, and png_set_tRNS_to_alpha michael@0: (Greg Roelofs, in "PNG: The Definitive Guide"). Deleted the 1.0.3a aliases. michael@0: Relocated start of 'extern "C"' block in png.h so it doesn't include pngconf.h michael@0: Revised calculation of num_blocks in pngmem.c to avoid a potentially michael@0: negative shift distance, whose results are undefined in the C language. michael@0: Added a check in pngset.c to prevent writing multiple tIME chunks. michael@0: Added a check in pngwrite.c to detect invalid small window_bits sizes. michael@0: michael@0: Version 1.0.3d [September 4, 1999] michael@0: Fixed type casting of igamma in pngrutil.c michael@0: Added new png_expand functions to scripts/pngdef.pas and pngos2.def michael@0: Added a demo read_user_transform_fn that examines the row filters in pngtest.c michael@0: michael@0: Version 1.0.4 [September 24, 1999] michael@0: Define PNG_ALWAYS_EXTERN in pngconf.h if __STDC__ is defined michael@0: Delete #define PNG_INTERNAL and include "png.h" from pngasmrd.h michael@0: Made several minor corrections to pngtest.c michael@0: Renamed the makefiles with longer but more user friendly extensions. michael@0: Copied the PNG copyright and license to a separate LICENSE file. michael@0: Revised documentation, png.h, and example.c to remove reference to michael@0: "viewing_gamma" which no longer appears in the PNG specification. michael@0: Revised pngvcrd.c to use MMX code for interlacing only on the final pass. michael@0: Updated pngvcrd.c to use the faster C filter algorithms from libpng-1.0.1a michael@0: Split makefile.win32vc into two versions, makefile.vcawin32 (uses MMX michael@0: assembler code) and makefile.vcwin32 (doesn't). michael@0: Added a CPU timing report to pngtest.c (enabled by defining PNGTEST_TIMING) michael@0: Added a copy of pngnow.png to the distribution. michael@0: michael@0: Version 1.0.4a [September 25, 1999] michael@0: Increase max_pixel_depth in pngrutil.c if a user transform needs it. michael@0: Changed several division operations to right-shifts in pngvcrd.c michael@0: michael@0: Version 1.0.4b [September 30, 1999] michael@0: Added parentheses in line 3732 of pngvcrd.c michael@0: Added a comment in makefile.linux warning about buggy -O3 in pgcc 2.95.1 michael@0: michael@0: Version 1.0.4c [October 1, 1999] michael@0: Added a "png_check_version" function in png.c and pngtest.c that will generate michael@0: a helpful compiler error if an old png.h is found in the search path. michael@0: Changed type of png_user_transform_depth|channels from int to png_byte. michael@0: michael@0: Version 1.0.4d [October 6, 1999] michael@0: Changed 0.45 to 0.45455 in png_set_sRGB() michael@0: Removed unused PLTE entries from pngnow.png michael@0: Re-enabled some parts of pngvcrd.c (png_combine_row) that work properly. michael@0: michael@0: Version 1.0.4e [October 10, 1999] michael@0: Fixed sign error in pngvcrd.c (Greg Roelofs) michael@0: Replaced some instances of memcpy with simple assignments in pngvcrd (GR-P) michael@0: michael@0: Version 1.0.4f [October 15, 1999] michael@0: Surrounded example.c code with #if 0 .. #endif to prevent people from michael@0: inadvertently trying to compile it. michael@0: Changed png_get_header_version() from a function to a macro in png.h michael@0: Added type casting mostly in pngrtran.c and pngwtran.c michael@0: Removed some pointless "ptr = NULL" in pngmem.c michael@0: Added a "contrib" directory containing the source code from Greg's book. michael@0: michael@0: Version 1.0.5 [October 15, 1999] michael@0: Minor editing of the INSTALL and README files. michael@0: michael@0: Version 1.0.5a [October 23, 1999] michael@0: Added contrib/pngsuite and contrib/pngminus (Willem van Schaik) michael@0: Fixed a typo in the png_set_sRGB() function call in example.c (Jan Nijtmans) michael@0: Further optimization and bugfix of pngvcrd.c michael@0: Revised pngset.c so that it does not allocate or free memory in the user's michael@0: text_ptr structure. Instead, it makes its own copy. michael@0: Created separate write_end_info_struct in pngtest.c for a more severe test. michael@0: Added code in pngwrite.c to free info_ptr->text[i].key to stop a memory leak. michael@0: michael@0: Version 1.0.5b [November 23, 1999] michael@0: Moved PNG_FLAG_HAVE_CHUNK_HEADER, PNG_FLAG_BACKGROUND_IS_GRAY and michael@0: PNG_FLAG_WROTE_tIME from flags to mode. michael@0: Added png_write_info_before_PLTE() function. michael@0: Fixed some typecasting in contrib/gregbook/*.c michael@0: Updated scripts/makevms.com and added makevms.com to contrib/gregbook michael@0: and contrib/pngminus (Martin Zinser) michael@0: michael@0: Version 1.0.5c [November 26, 1999] michael@0: Moved png_get_header_version from png.h to png.c, to accommodate ansi2knr. michael@0: Removed all global arrays (according to PNG_NO_GLOBAL_ARRAYS macro), to michael@0: accommodate making DLL's: Moved usr_png_ver from global variable to function michael@0: png_get_header_ver() in png.c. Moved png_sig to png_sig_bytes in png.c and michael@0: eliminated use of png_sig in pngwutil.c. Moved the various png_CHNK arrays michael@0: into pngtypes.h. Eliminated use of global png_pass arrays. Declared the michael@0: png_CHNK and png_pass arrays to be "const". Made the global arrays michael@0: available to applications (although none are used in libpng itself) when michael@0: PNG_NO_GLOBAL_ARRAYS is not defined or when PNG_GLOBAL_ARRAYS is defined. michael@0: Removed some extraneous "-I" from contrib/pngminus/makefile.std michael@0: Changed the PNG_sRGB_INTENT macros in png.h to be consistent with PNG-1.2. michael@0: Change PNG_SRGB_INTENT to PNG_sRGB_INTENT in libpng.txt and libpng.3 michael@0: michael@0: Version 1.0.5d [November 29, 1999] michael@0: Add type cast (png_const_charp) two places in png.c michael@0: Eliminated pngtypes.h; use macros instead to declare PNG_CHNK arrays. michael@0: Renamed "PNG_GLOBAL_ARRAYS" to "PNG_USE_GLOBAL_ARRAYS" and made available michael@0: to applications a macro "PNG_USE_LOCAL_ARRAYS". michael@0: comment out (with #ifdef) all the new declarations when michael@0: PNG_USE_GLOBAL_ARRAYS is defined. michael@0: Added PNG_EXPORT_VAR macro to accommodate making DLL's. michael@0: michael@0: Version 1.0.5e [November 30, 1999] michael@0: Added iCCP, iTXt, and sPLT support; added "lang" member to the png_text michael@0: structure; refactored the inflate/deflate support to make adding new chunks michael@0: with trailing compressed parts easier in the future, and added new functions michael@0: png_free_iCCP, png_free_pCAL, png_free_sPLT, png_free_text, png_get_iCCP, michael@0: png_get_spalettes, png_set_iCCP, png_set_spalettes (Eric S. Raymond). michael@0: NOTE: Applications that write text chunks MUST define png_text->lang michael@0: before calling png_set_text(). It must be set to NULL if you want to michael@0: write tEXt or zTXt chunks. If you want your application to be able to michael@0: run with older versions of libpng, use michael@0: michael@0: #ifdef PNG_iTXt_SUPPORTED michael@0: png_text[i].lang = NULL; michael@0: #endif michael@0: michael@0: Changed png_get_oFFs() and png_set_oFFs() to use signed rather than unsigned michael@0: offsets (Eric S. Raymond). michael@0: Combined PNG_READ_cHNK_SUPPORTED and PNG_WRITE_cHNK_SUPPORTED macros into michael@0: PNG_cHNK_SUPPORTED and combined the three types of PNG_text_SUPPORTED michael@0: macros, leaving the separate macros also available. michael@0: Removed comments on #endifs at the end of many short, non-nested #if-blocks. michael@0: michael@0: Version 1.0.5f [December 6, 1999] michael@0: Changed makefile.solaris to issue a warning about potential problems when michael@0: the ucb "ld" is in the path ahead of the ccs "ld". michael@0: Removed "- [date]" from the "synopsis" line in libpng.3 and libpngpf.3. michael@0: Added sCAL chunk support (Eric S. Raymond). michael@0: michael@0: Version 1.0.5g [December 7, 1999] michael@0: Fixed "png_free_spallettes" typo in png.h michael@0: Added code to handle new chunks in pngpread.c michael@0: Moved PNG_CHNK string macro definitions outside of PNG_NO_EXTERN block michael@0: Added "translated_key" to png_text structure and png_write_iTXt(). michael@0: Added code in pngwrite.c to work around a newly discovered zlib bug. michael@0: michael@0: Version 1.0.5h [December 10, 1999] michael@0: NOTE: regarding the note for version 1.0.5e, the following must also michael@0: be included in your code: michael@0: png_text[i].translated_key = NULL; michael@0: Unknown chunk handling is now supported. michael@0: Option to eliminate all floating point support was added. Some new michael@0: fixed-point functions such as png_set_gAMA_fixed() were added. michael@0: Expanded tabs and removed trailing blanks in source files. michael@0: michael@0: Version 1.0.5i [December 13, 1999] michael@0: Added some type casts to silence compiler warnings. michael@0: Renamed "png_free_spalette" to "png_free_spalettes" for consistency. michael@0: Removed leading blanks from a #define in pngvcrd.c michael@0: Added some parameters to the new png_set_keep_unknown_chunks() function. michael@0: Added a test for up->location != 0 in the first instance of writing michael@0: unknown chunks in pngwrite.c michael@0: Changed "num" to "i" in png_free_spalettes() and png_free_unknowns() to michael@0: prevent recursion. michael@0: Added png_free_hIST() function. michael@0: Various patches to fix bugs in the sCAL and integer cHRM processing, michael@0: and to add some convenience macros for use with sCAL. michael@0: michael@0: Version 1.0.5j [December 21, 1999] michael@0: Changed "unit" parameter of png_write_sCAL from png_byte to int, to work michael@0: around buggy compilers. michael@0: Added new type "png_fixed_point" for integers that hold float*100000 values michael@0: Restored backward compatibility of tEXt/zTXt chunk processing: michael@0: Restored the first four members of png_text to the same order as v.1.0.5d. michael@0: Added members "lang_key" and "itxt_length" to png_text struct. Set michael@0: text_length=0 when "text" contains iTXt data. Use the "compression" michael@0: member to distinguish among tEXt/zTXt/iTXt types. Added michael@0: PNG_ITXT_COMPRESSION_NONE (1) and PNG_ITXT_COMPRESSION_zTXt(2) macros. michael@0: The "Note" above, about backward incompatibility of libpng-1.0.5e, no michael@0: longer applies. michael@0: Fixed png_read|write_iTXt() to read|write parameters in the right order, michael@0: and to write the iTXt chunk after IDAT if it appears in the end_ptr. michael@0: Added pnggccrd.c, version of pngvcrd.c Intel assembler for gcc (Greg Roelofs) michael@0: Reversed the order of trying to write floating-point and fixed-point gAMA. michael@0: michael@0: Version 1.0.5k [December 27, 1999] michael@0: Added many parentheses, e.g., "if (a && b & c)" becomes "if (a && (b & c))" michael@0: Added png_handle_as_unknown() function (Glenn) michael@0: Added png_free_chunk_list() function and chunk_list and num_chunk_list members michael@0: of png_ptr. michael@0: Eliminated erroneous warnings about multiple sPLT chunks and sPLT-after-PLTE. michael@0: Fixed a libpng-1.0.5h bug in pngrutil.c that was issuing erroneous warnings michael@0: about ignoring incorrect gAMA with sRGB (gAMA was in fact not ignored) michael@0: Added png_free_tRNS(); png_set_tRNS() now malloc's its own trans array (ESR). michael@0: Define png_get_int_32 when oFFs chunk is supported as well as when pCAL is. michael@0: Changed type of proflen from png_int_32 to png_uint_32 in png_get_iCCP(). michael@0: michael@0: Version 1.0.5l [January 1, 2000] michael@0: Added functions png_set_read_user_chunk_fn() and png_get_user_chunk_ptr() michael@0: for setting a callback function to handle unknown chunks and for michael@0: retrieving the associated user pointer (Glenn). michael@0: michael@0: Version 1.0.5m [January 7, 2000] michael@0: Added high-level functions png_read_png(), png_write_png(), png_free_pixels(). michael@0: michael@0: Version 1.0.5n [January 9, 2000] michael@0: Added png_free_PLTE() function, and modified png_set_PLTE() to malloc its michael@0: own memory for info_ptr->palette. This makes it safe for the calling michael@0: application to free its copy of the palette any time after it calls michael@0: png_set_PLTE(). michael@0: michael@0: Version 1.0.5o [January 20, 2000] michael@0: Cosmetic changes only (removed some trailing blanks and TABs) michael@0: michael@0: Version 1.0.5p [January 31, 2000] michael@0: Renamed pngdll.mak to makefile.bd32 michael@0: Cosmetic changes in pngtest.c michael@0: michael@0: Version 1.0.5q [February 5, 2000] michael@0: Relocated the makefile.solaris warning about PATH problems. michael@0: Fixed pngvcrd.c bug by pushing/popping registers in mmxsupport (Bruce Oberg) michael@0: Revised makefile.gcmmx michael@0: Added PNG_SETJMP_SUPPORTED, PNG_SETJMP_NOT_SUPPORTED, and PNG_ABORT() macros michael@0: michael@0: Version 1.0.5r [February 7, 2000] michael@0: Removed superfluous prototype for png_get_itxt from png.h michael@0: Fixed a bug in pngrtran.c that improperly expanded the background color. michael@0: Return *num_text=0 from png_get_text() when appropriate, and fix documentation michael@0: of png_get_text() in libpng.txt/libpng.3. michael@0: michael@0: Version 1.0.5s [February 18, 2000] michael@0: Added "png_jmp_env()" macro to pngconf.h, to help people migrate to the michael@0: new error handler that's planned for the next libpng release, and changed michael@0: example.c, pngtest.c, and contrib programs to use this macro. michael@0: Revised some of the DLL-export macros in pngconf.h (Greg Roelofs) michael@0: Fixed a bug in png_read_png() that caused it to fail to expand some images michael@0: that it should have expanded. michael@0: Fixed some mistakes in the unused and undocumented INCH_CONVERSIONS functions michael@0: in pngget.c michael@0: Changed the allocation of palette, history, and trans arrays back to michael@0: the version 1.0.5 method (linking instead of copying) which restores michael@0: backward compatibility with version 1.0.5. Added some remarks about michael@0: that in example.c. Added "free_me" member to info_ptr and png_ptr michael@0: and added png_free_data() function. michael@0: Updated makefile.linux and makefile.gccmmx to make directories conditionally. michael@0: Made cosmetic changes to pngasmrd.h michael@0: Added png_set_rows() and png_get_rows(), for use with png_read|write_png(). michael@0: Modified png_read_png() to allocate info_ptr->row_pointers only if it michael@0: hasn't already been allocated. michael@0: michael@0: Version 1.0.5t [March 4, 2000] michael@0: Changed png_jmp_env() migration aiding macro to png_jmpbuf(). michael@0: Fixed "interlace" typo (should be "interlaced") in contrib/gregbook/read2-x.c michael@0: Fixed bug with use of PNG_BEFORE_IHDR bit in png_ptr->mode, introduced when michael@0: PNG_FLAG_HAVE_CHUNK_HEADER was moved into png_ptr->mode in version 1.0.5b michael@0: Files in contrib/gregbook were revised to use png_jmpbuf() and to select michael@0: a 24-bit visual if one is available, and to allow abbreviated options. michael@0: Files in contrib/pngminus were revised to use the png_jmpbuf() macro. michael@0: Removed spaces in makefile.linux and makefile.gcmmx, introduced in 1.0.5s michael@0: michael@0: Version 1.0.5u [March 5, 2000] michael@0: Simplified the code that detects old png.h in png.c and pngtest.c michael@0: Renamed png_spalette (_p, _pp) to png_sPLT_t (_tp, _tpp) michael@0: Increased precision of rgb_to_gray calculations from 8 to 15 bits and michael@0: added png_set_rgb_to_gray_fixed() function. michael@0: Added makefile.bc32 (32-bit Borland C++, C mode) michael@0: michael@0: Version 1.0.5v [March 11, 2000] michael@0: Added some parentheses to the png_jmpbuf macro definition. michael@0: Updated references to the zlib home page, which has moved to freesoftware.com. michael@0: Corrected bugs in documentation regarding png_read_row() and png_write_row(). michael@0: Updated documentation of png_rgb_to_gray calculations in libpng.3/libpng.txt. michael@0: Renamed makefile.borland,turboc3 back to makefile.bor,tc3 as in version 1.0.3, michael@0: revised borland makefiles; added makefile.ibmvac3 and makefile.gcc (Cosmin) michael@0: michael@0: Version 1.0.6 [March 20, 2000] michael@0: Minor revisions of makefile.bor, libpng.txt, and gregbook/rpng2-win.c michael@0: Added makefile.sggcc (SGI IRIX with gcc) michael@0: michael@0: Version 1.0.6d [April 7, 2000] michael@0: Changed sprintf() to strcpy() in png_write_sCAL_s() to work without STDIO michael@0: Added data_length parameter to png_decompress_chunk() function michael@0: Revised documentation to remove reference to abandoned png_free_chnk functions michael@0: Fixed an error in png_rgb_to_gray_fixed() michael@0: Revised example.c, usage of png_destroy_write_struct(). michael@0: Renamed makefile.ibmvac3 to makefile.ibmc, added libpng.icc IBM project file michael@0: Added a check for info_ptr->free_me&PNG_FREE_TEXT when freeing text in png.c michael@0: Simplify png_sig_bytes() function to remove use of non-ISO-C strdup(). michael@0: michael@0: Version 1.0.6e [April 9, 2000] michael@0: Added png_data_freer() function. michael@0: In the code that checks for over-length tRNS chunks, added check of michael@0: info_ptr->num_trans as well as png_ptr->num_trans (Matthias Benckmann) michael@0: Minor revisions of libpng.txt/libpng.3. michael@0: Check for existing data and free it if the free_me flag is set, in png_set_*() michael@0: and png_handle_*(). michael@0: Only define PNG_WEIGHTED_FILTERS_SUPPORTED when PNG_FLOATING_POINT_SUPPORTED michael@0: is defined. michael@0: Changed several instances of PNG_NO_CONSOLE_ID to PNG_NO_STDIO in pngrutil.c michael@0: and mentioned the purposes of the two macros in libpng.txt/libpng.3. michael@0: michael@0: Version 1.0.6f [April 14, 2000] michael@0: Revised png_set_iCCP() and png_set_rows() to avoid prematurely freeing data. michael@0: Add checks in png_set_text() for NULL members of the input text structure. michael@0: Revised libpng.txt/libpng.3. michael@0: Removed superfluous prototype for png_set_iTXt from png.h michael@0: Removed "else" from pngread.c, after png_error(), and changed "0" to "length". michael@0: Changed several png_errors about malformed ancillary chunks to png_warnings. michael@0: michael@0: Version 1.0.6g [April 24, 2000] michael@0: Added png_pass-* arrays to pnggccrd.c when PNG_USE_LOCAL_ARRAYS is defined. michael@0: Relocated paragraph about png_set_background() in libpng.3/libpng.txt michael@0: and other revisions (Matthias Benckmann) michael@0: Relocated info_ptr->free_me, png_ptr->free_me, and other info_ptr and michael@0: png_ptr members to restore binary compatibility with libpng-1.0.5 michael@0: (breaks compatibility with libpng-1.0.6). michael@0: michael@0: Version 1.0.6h [April 24, 2000] michael@0: Changed shared library so-number pattern from 2.x.y.z to xy.z (this builds michael@0: libpng.so.10 & libpng.so.10.6h instead of libpng.so.2 & libpng.so.2.1.0.6h) michael@0: This is a temporary change for test purposes. michael@0: michael@0: Version 1.0.6i [May 2, 2000] michael@0: Rearranged some members at the end of png_info and png_struct, to put michael@0: unknown_chunks_num and free_me within the original size of the png_structs michael@0: and free_me, png_read_user_fn, and png_free_fn within the original png_info, michael@0: because some old applications allocate the structs directly instead of michael@0: using png_create_*(). michael@0: Added documentation of user memory functions in libpng.txt/libpng.3 michael@0: Modified png_read_png so that it will use user_allocated row_pointers michael@0: if present, unless free_me directs that it be freed, and added description michael@0: of the use of png_set_rows() and png_get_rows() in libpng.txt/libpng.3. michael@0: Added PNG_LEGACY_SUPPORTED macro, and #ifdef out all new (since version michael@0: 1.00) members of png_struct and png_info, to regain binary compatibility michael@0: when you define this macro. Capabilities lost in this event michael@0: are user transforms (new in version 1.0.0),the user transform pointer michael@0: (new in version 1.0.2), rgb_to_gray (new in 1.0.5), iCCP, sCAL, sPLT, michael@0: the high-level interface, and unknown chunks support (all new in 1.0.6). michael@0: This was necessary because of old applications that allocate the structs michael@0: directly as authors were instructed to do in libpng-0.88 and earlier, michael@0: instead of using png_create_*(). michael@0: Added modes PNG_CREATED_READ_STRUCT and PNG_CREATED_WRITE_STRUCT which michael@0: can be used to detect codes that directly allocate the structs, and michael@0: code to check these modes in png_read_init() and png_write_init() and michael@0: generate a libpng error if the modes aren't set and PNG_LEGACY_SUPPORTED michael@0: was not defined. michael@0: Added makefile.intel and updated makefile.watcom (Pawel Mrochen) michael@0: michael@0: Version 1.0.6j [May 3, 2000] michael@0: Overloaded png_read_init() and png_write_init() with macros that convert michael@0: calls to png_read_init_2() or png_write_init_2() that check the version michael@0: and structure sizes. michael@0: michael@0: Version 1.0.7beta11 [May 7, 2000] michael@0: Removed the new PNG_CREATED_READ_STRUCT and PNG_CREATED_WRITE_STRUCT modes michael@0: which are no longer used. michael@0: Eliminated the three new members of png_text when PNG_LEGACY_SUPPORTED is michael@0: defined or when neither PNG_READ_iTXt_SUPPORTED nor PNG_WRITE_iTXT_SUPPORTED michael@0: is defined. michael@0: Made PNG_NO_READ|WRITE_iTXt the default setting, to avoid memory michael@0: overrun when old applications fill the info_ptr->text structure directly. michael@0: Added PNGAPI macro, and added it to the definitions of all exported functions. michael@0: Relocated version macro definitions ahead of the includes of zlib.h and michael@0: pngconf.h in png.h. michael@0: michael@0: Version 1.0.7beta12 [May 12, 2000] michael@0: Revised pngset.c to avoid a problem with expanding the png_debug macro. michael@0: Deleted some extraneous defines from pngconf.h michael@0: Made PNG_NO_CONSOLE_IO the default condition when PNG_BUILD_DLL is defined. michael@0: Use MSC _RPTn debugging instead of fprintf if _MSC_VER is defined. michael@0: Added png_access_version_number() function. michael@0: Check for mask&PNG_FREE_CHNK (for TEXT, SCAL, PCAL) in png_free_data(). michael@0: Expanded libpng.3/libpng.txt information about png_data_freer(). michael@0: michael@0: Version 1.0.7beta14 [May 17, 2000] (beta13 was not published) michael@0: Changed pnggccrd.c and pngvcrd.c to handle bad adaptive filter types as michael@0: warnings instead of errors, as pngrutil.c does. michael@0: Set the PNG_INFO_IDAT valid flag in png_set_rows() so png_write_png() michael@0: will actually write IDATs. michael@0: Made the default PNG_USE_LOCAL_ARRAYS depend on PNG_DLL instead of WIN32. michael@0: Make png_free_data() ignore its final parameter except when freeing data michael@0: that can have multiple instances (text, sPLT, unknowns). michael@0: Fixed a new bug in png_set_rows(). michael@0: Removed info_ptr->valid tests from png_free_data(), as in version 1.0.5. michael@0: Added png_set_invalid() function. michael@0: Fixed incorrect illustrations of png_destroy_write_struct() in example.c. michael@0: michael@0: Version 1.0.7beta15 [May 30, 2000] michael@0: Revised the deliberately erroneous Linux setjmp code in pngconf.h to produce michael@0: fewer error messages. michael@0: Rearranged checks for Z_OK to check the most likely path first in pngpread.c michael@0: and pngwutil.c. michael@0: Added checks in pngtest.c for png_create_*() returning NULL, and mentioned michael@0: in libpng.txt/libpng.3 the need for applications to check this. michael@0: Changed names of png_default_*() functions in pngtest to pngtest_*(). michael@0: Changed return type of png_get_x|y_offset_*() from png_uint_32 to png_int_32. michael@0: Fixed some bugs in the unused PNG_INCH_CONVERSIONS functions in pngget.c michael@0: Set each pointer to NULL after freeing it in png_free_data(). michael@0: Worked around a problem in pngconf.h; AIX's strings.h defines an "index" michael@0: macro that conflicts with libpng's png_color_16.index. (Dimitri michael@0: Papadapoulos) michael@0: Added "msvc" directory with MSVC++ project files (Simon-Pierre Cadieux). michael@0: michael@0: Version 1.0.7beta16 [June 4, 2000] michael@0: Revised the workaround of AIX string.h "index" bug. michael@0: Added a check for overlength PLTE chunk in pngrutil.c. michael@0: Added PNG_NO_POINTER_INDEXING macro to use array-indexing instead of pointer michael@0: indexing in pngrutil.c and pngwutil.c to accommodate a buggy compiler. michael@0: Added a warning in png_decompress_chunk() when it runs out of data, e.g. michael@0: when it tries to read an erroneous PhotoShop iCCP chunk. michael@0: Added PNG_USE_DLL macro. michael@0: Revised the copyright/disclaimer/license notice. michael@0: Added contrib/msvctest directory michael@0: michael@0: Version 1.0.7rc1 [June 9, 2000] michael@0: Corrected the definition of PNG_TRANSFORM_INVERT_ALPHA (0x0400 not 0x0200) michael@0: Added contrib/visupng directory (Willem van Schaik) michael@0: michael@0: Version 1.0.7beta18 [June 23, 2000] michael@0: Revised PNGAPI definition, and pngvcrd.c to work with __GCC__ michael@0: and do not redefine PNGAPI if it is passed in via a compiler directive. michael@0: Revised visupng/PngFile.c to remove returns from within the Try block. michael@0: Removed leading underscores from "_PNG_H" and "_PNG_SAVE_BSD_SOURCE" macros. michael@0: Updated contrib/visupng/cexcept.h to version 1.0.0. michael@0: Fixed bugs in pngwrite.c and pngwutil.c that prevented writing iCCP chunks. michael@0: michael@0: Version 1.0.7rc2 [June 28, 2000] michael@0: Updated license to include disclaimers required by UCITA. michael@0: Fixed "DJBPP" typo in pnggccrd.c introduced in beta18. michael@0: michael@0: Version 1.0.7 [July 1, 2000] michael@0: Revised the definition of "trans_values" in libpng.3/libpng.txt michael@0: michael@0: Version 1.0.8beta1 [July 8, 2000] michael@0: Added png_free(png_ptr, key) two places in pngpread.c to stop memory leaks. michael@0: Changed PNG_NO_STDIO to PNG_NO_CONSOLE_IO, several places in pngrutil.c and michael@0: pngwutil.c. michael@0: Changed PNG_EXPORT_VAR to use PNG_IMPEXP, in pngconf.h. michael@0: Removed unused "#include " from png.c michael@0: Added WindowsCE support. michael@0: Revised pnggccrd.c to work with gcc-2.95.2 and in the Cygwin environment. michael@0: michael@0: Version 1.0.8beta2 [July 10, 2000] michael@0: Added project files to the wince directory and made further revisions michael@0: of pngtest.c, pngrio.c, and pngwio.c in support of WindowsCE. michael@0: michael@0: Version 1.0.8beta3 [July 11, 2000] michael@0: Only set the PNG_FLAG_FREE_TRNS or PNG_FREE_TRNS flag in png_handle_tRNS() michael@0: for indexed-color input files to avoid potential double-freeing trans array michael@0: under some unusual conditions; problem was introduced in version 1.0.6f. michael@0: Further revisions to pngtest.c and files in the wince subdirectory. michael@0: michael@0: Version 1.0.8beta4 [July 14, 2000] michael@0: Added the files pngbar.png and pngbar.jpg to the distribution. michael@0: Added makefile.cygwin, and cygwin support in pngconf.h michael@0: Added PNG_NO_ZALLOC_ZERO macro (makes png_zalloc skip zeroing memory) michael@0: michael@0: Version 1.0.8rc1 [July 16, 2000] michael@0: Revised png_debug() macros and statements to eliminate compiler warnings. michael@0: michael@0: Version 1.0.8 [July 24, 2000] michael@0: Added png_flush() in pngwrite.c, after png_write_IEND(). michael@0: Updated makefile.hpux to build a shared library. michael@0: michael@0: Version 1.0.9beta1 [November 10, 2000] michael@0: Fixed typo in scripts/makefile.hpux michael@0: Updated makevms.com in scripts and contrib/* and contrib/* (Martin Zinser) michael@0: Fixed seqence-point bug in contrib/pngminus/png2pnm (Martin Zinser) michael@0: Changed "cdrom.com" in documentation to "libpng.org" michael@0: Revised pnggccrd.c to get it all working, and updated makefile.gcmmx (Greg). michael@0: Changed type of "params" from voidp to png_voidp in png_read|write_png(). michael@0: Make sure PNGAPI and PNG_IMPEXP are defined in pngconf.h. michael@0: Revised the 3 instances of WRITEFILE in pngtest.c. michael@0: Relocated "msvc" and "wince" project subdirectories into "dll" subdirectory. michael@0: Updated png.rc in dll/msvc project michael@0: Revised makefile.dec to define and use LIBPATH and INCPATH michael@0: Increased size of global png_libpng_ver[] array from 12 to 18 chars. michael@0: Made global png_libpng_ver[], png_sig[] and png_pass_*[] arrays const. michael@0: Removed duplicate png_crc_finish() from png_handle_bKGD() function. michael@0: Added a warning when application calls png_read_update_info() multiple times. michael@0: Revised makefile.cygwin michael@0: Fixed bugs in iCCP support in pngrutil.c and pngwutil.c. michael@0: Replaced png_set_empty_plte_permitted() with png_permit_mng_features(). michael@0: michael@0: Version 1.0.9beta2 [November 19, 2000] michael@0: Renamed the "dll" subdirectory "projects". michael@0: Added borland project files to "projects" subdirectory. michael@0: Set VS_FF_PRERELEASE and VS_FF_PATCHED flags in msvc/png.rc when appropriate. michael@0: Add error message in png_set_compression_buffer_size() when malloc fails. michael@0: michael@0: Version 1.0.9beta3 [November 23, 2000] michael@0: Revised PNG_LIBPNG_BUILD_TYPE macro in png.h, used in the msvc project. michael@0: Removed the png_flush() in pngwrite.c that crashes some applications michael@0: that don't set png_output_flush_fn. michael@0: Added makefile.macosx and makefile.aix to scripts directory. michael@0: michael@0: Version 1.0.9beta4 [December 1, 2000] michael@0: Change png_chunk_warning to png_warning in png_check_keyword(). michael@0: Increased the first part of msg buffer from 16 to 18 in png_chunk_error(). michael@0: michael@0: Version 1.0.9beta5 [December 15, 2000] michael@0: Added support for filter method 64 (for PNG datastreams embedded in MNG). michael@0: michael@0: Version 1.0.9beta6 [December 18, 2000] michael@0: Revised png_set_filter() to accept filter method 64 when appropriate. michael@0: Added new PNG_HAVE_PNG_SIGNATURE bit to png_ptr->mode and use it to michael@0: help prevent applications from using MNG features in PNG datastreams. michael@0: Added png_permit_mng_features() function. michael@0: Revised libpng.3/libpng.txt. Changed "filter type" to "filter method". michael@0: michael@0: Version 1.0.9rc1 [December 23, 2000] michael@0: Revised test for PNG_HAVE_PNG_SIGNATURE in pngrutil.c michael@0: Fixed error handling of unknown compression type in png_decompress_chunk(). michael@0: In pngconf.h, define __cdecl when _MSC_VER is defined. michael@0: michael@0: Version 1.0.9beta7 [December 28, 2000] michael@0: Changed PNG_TEXT_COMPRESSION_zTXt to PNG_COMPRESSION_TYPE_BASE several places. michael@0: Revised memory management in png_set_hIST and png_handle_hIST in a backward michael@0: compatible manner. PLTE and tRNS were revised similarly. michael@0: Revised the iCCP chunk reader to ignore trailing garbage. michael@0: michael@0: Version 1.0.9beta8 [January 12, 2001] michael@0: Moved pngasmrd.h into pngconf.h. michael@0: Improved handling of out-of-spec garbage iCCP chunks generated by PhotoShop. michael@0: michael@0: Version 1.0.9beta9 [January 15, 2001] michael@0: Added png_set_invalid, png_permit_mng_features, and png_mmx_supported to michael@0: wince and msvc project module definition files. michael@0: Minor revision of makefile.cygwin. michael@0: Fixed bug with progressive reading of narrow interlaced images in pngpread.c michael@0: michael@0: Version 1.0.9beta10 [January 16, 2001] michael@0: Do not typedef png_FILE_p in pngconf.h when PNG_NO_STDIO is defined. michael@0: Fixed "png_mmx_supported" typo in project definition files. michael@0: michael@0: Version 1.0.9beta11 [January 19, 2001] michael@0: Updated makefile.sgi to make shared library. michael@0: Removed png_mmx_support() function and disabled PNG_MNG_FEATURES_SUPPORTED michael@0: by default, for the benefit of DLL forward compatibility. These will michael@0: be re-enabled in version 1.2.0. michael@0: michael@0: Version 1.0.9rc2 [January 22, 2001] michael@0: Revised cygwin support. michael@0: michael@0: Version 1.0.9 [January 31, 2001] michael@0: Added check of cygwin's ALL_STATIC in pngconf.h michael@0: Added "-nommx" parameter to contrib/gregbook/rpng2-win and rpng2-x demos. michael@0: michael@0: Version 1.0.10beta1 [March 14, 2001] michael@0: Revised makefile.dec, makefile.sgi, and makefile.sggcc; added makefile.hpgcc. michael@0: Reformatted libpng.3 to eliminate bad line breaks. michael@0: Added checks for _mmx_supported in the read_filter_row function of pnggccrd.c michael@0: Added prototype for png_mmx_support() near the top of pnggccrd.c michael@0: Moved some error checking from png_handle_IHDR to png_set_IHDR. michael@0: Added PNG_NO_READ_SUPPORTED and PNG_NO_WRITE_SUPPORTED macros. michael@0: Revised png_mmx_support() function in pnggccrd.c michael@0: Restored version 1.0.8 PNG_WRITE_EMPTY_PLTE_SUPPORTED behavior in pngwutil.c michael@0: Fixed memory leak in contrib/visupng/PngFile.c michael@0: Fixed bugs in png_combine_row() in pnggccrd.c and pngvcrd.c (C version) michael@0: Added warnings when retrieving or setting gamma=0. michael@0: Increased the first part of msg buffer from 16 to 18 in png_chunk_warning(). michael@0: michael@0: Version 1.0.10rc1 [March 23, 2001] michael@0: Changed all instances of memcpy, strcpy, and strlen to png_memcpy, png_strcpy, michael@0: and png_strlen. michael@0: Revised png_mmx_supported() function in pnggccrd.c to return proper value. michael@0: Fixed bug in progressive reading (pngpread.c) with small images (height < 8). michael@0: michael@0: Version 1.0.10 [March 30, 2001] michael@0: Deleted extraneous space (introduced in 1.0.9) from line 42 of makefile.cygwin michael@0: Added beos project files (Chris Herborth) michael@0: michael@0: Version 1.0.11beta1 [April 3, 2001] michael@0: Added type casts on several png_malloc() calls (Dimitri Papadapoulos). michael@0: Removed a no-longer needed AIX work-around from pngconf.h michael@0: Changed several "//" single-line comments to C-style in pnggccrd.c michael@0: michael@0: Version 1.0.11beta2 [April 11, 2001] michael@0: Removed PNGAPI from several functions whose prototypes did not have PNGAPI. michael@0: Updated scripts/pngos2.def michael@0: michael@0: Version 1.0.11beta3 [April 14, 2001] michael@0: Added checking the results of many instances of png_malloc() for NULL michael@0: michael@0: Version 1.0.11beta4 [April 20, 2001] michael@0: Undid the changes from version 1.0.11beta3. Added a check for NULL return michael@0: from user's malloc_fn(). michael@0: Removed some useless type casts of the NULL pointer. michael@0: Added makefile.netbsd michael@0: michael@0: Version 1.0.11 [April 27, 2001] michael@0: Revised makefile.netbsd michael@0: michael@0: Version 1.0.12beta1 [May 14, 2001] michael@0: Test for Windows platform in pngconf.h when including malloc.h (Emmanuel Blot) michael@0: Updated makefile.cygwin and handling of Cygwin's ALL_STATIC in pngconf.h michael@0: Added some never-to-be-executed code in pnggccrd.c to quiet compiler warnings. michael@0: Eliminated the png_error about apps using png_read|write_init(). Instead, michael@0: libpng will reallocate the png_struct and info_struct if they are too small. michael@0: This retains future binary compatibility for old applications written for michael@0: libpng-0.88 and earlier. michael@0: michael@0: Version 1.2.0beta1 [May 6, 2001] michael@0: Bumped DLLNUM to 2. michael@0: Re-enabled PNG_MNG_FEATURES_SUPPORTED and enabled PNG_ASSEMBLER_CODE_SUPPORTED michael@0: by default. michael@0: Added runtime selection of MMX features. michael@0: Added png_set_strip_error_numbers function and related macros. michael@0: michael@0: Version 1.2.0beta2 [May 7, 2001] michael@0: Finished merging 1.2.0beta1 with version 1.0.11 michael@0: Added a check for attempts to read or write PLTE in grayscale PNG datastreams. michael@0: michael@0: Version 1.2.0beta3 [May 17, 2001] michael@0: Enabled user memory function by default. michael@0: Modified png_create_struct so it passes user mem_ptr to user memory allocator. michael@0: Increased png_mng_features flag from png_byte to png_uint_32. michael@0: Bumped shared-library (so-number) and dll-number to 3. michael@0: michael@0: Version 1.2.0beta4 [June 23, 2001] michael@0: Check for missing profile length field in iCCP chunk and free chunk_data michael@0: in case of truncated iCCP chunk. michael@0: Bumped shared-library number to 3 in makefile.sgi and makefile.sggcc michael@0: Bumped dll-number from 2 to 3 in makefile.cygwin michael@0: Revised contrib/gregbook/rpng*-x.c to avoid a memory leak and to exit cleanly michael@0: if user attempts to run it on an 8-bit display. michael@0: Updated contrib/gregbook michael@0: Use png_malloc instead of png_zalloc to allocate palette in pngset.c michael@0: Updated makefile.ibmc michael@0: Added some typecasts to eliminate gcc 3.0 warnings. Changed prototypes michael@0: of png_write_oFFS width and height from png_uint_32 to png_int_32. michael@0: Updated example.c michael@0: Revised prototypes for png_debug_malloc and png_debug_free in pngtest.c michael@0: michael@0: Version 1.2.0beta5 [August 8, 2001] michael@0: Revised contrib/gregbook michael@0: Revised makefile.gcmmx michael@0: Revised pnggccrd.c to conditionally compile some thread-unsafe code only michael@0: when PNG_THREAD_UNSAFE_OK is defined. michael@0: Added tests to prevent pngwutil.c from writing a bKGD or tRNS chunk with michael@0: value exceeding 2^bit_depth-1 michael@0: Revised makefile.sgi and makefile.sggcc michael@0: Replaced calls to fprintf(stderr,...) with png_warning() in pnggccrd.c michael@0: Removed restriction that do_invert_mono only operate on 1-bit opaque files michael@0: michael@0: Version 1.2.0 [September 1, 2001] michael@0: Changed a png_warning() to png_debug() in pnggccrd.c michael@0: Fixed contrib/gregbook/rpng-x.c, rpng2-x.c to avoid crash with XFreeGC(). michael@0: michael@0: Version 1.2.1beta1 [October 19, 2001] michael@0: Revised makefile.std in contrib/pngminus michael@0: Include background_1 in png_struct regardless of gamma support. michael@0: Revised makefile.netbsd and makefile.macosx, added makefile.darwin. michael@0: Revised example.c to provide more details about using row_callback(). michael@0: michael@0: Version 1.2.1beta2 [October 25, 2001] michael@0: Added type cast to each NULL appearing in a function call, except for michael@0: WINCE functions. michael@0: Added makefile.so9. michael@0: michael@0: Version 1.2.1beta3 [October 27, 2001] michael@0: Removed type casts from all NULLs. michael@0: Simplified png_create_struct_2(). michael@0: michael@0: Version 1.2.1beta4 [November 7, 2001] michael@0: Revised png_create_info_struct() and png_creat_struct_2(). michael@0: Added error message if png_write_info() was omitted. michael@0: Type cast NULLs appearing in function calls when _NO_PROTO or michael@0: PNG_TYPECAST_NULL is defined. michael@0: michael@0: Version 1.2.1rc1 [November 24, 2001] michael@0: Type cast NULLs appearing in function calls except when PNG_NO_TYPECAST_NULL michael@0: is defined. michael@0: Changed typecast of "size" argument to png_size_t in pngmem.c calls to michael@0: the user malloc_fn, to agree with the prototype in png.h michael@0: Added a pop/push operation to pnggccrd.c, to preserve Eflag (Maxim Sobolev) michael@0: Updated makefile.sgi to recognize LIBPATH and INCPATH. michael@0: Updated various makefiles so "make clean" does not remove previous major michael@0: version of the shared library. michael@0: michael@0: Version 1.2.1rc2 [December 4, 2001] michael@0: Always allocate 256-entry internal palette, hist, and trans arrays, to michael@0: avoid out-of-bounds memory reference caused by invalid PNG datastreams. michael@0: Added a check for prefix_length > data_length in iCCP chunk handler. michael@0: michael@0: Version 1.2.1 [December 7, 2001] michael@0: None. michael@0: michael@0: Version 1.2.2beta1 [February 22, 2002] michael@0: Fixed a bug with reading the length of iCCP profiles (Larry Reeves). michael@0: Revised makefile.linux, makefile.gcmmx, and makefile.sgi to generate michael@0: libpng.a, libpng12.so (not libpng.so.3), and libpng12/png.h michael@0: Revised makefile.darwin to remove "-undefined suppress" option. michael@0: Added checks for gamma and chromaticity values over 21474.83, which exceed michael@0: the limit for PNG unsigned 32-bit integers when encoded. michael@0: Revised calls to png_create_read_struct() and png_create_write_struct() michael@0: for simpler debugging. michael@0: Revised png_zalloc() so zlib handles errors (uses PNG_FLAG_MALLOC_NULL_MEM_OK) michael@0: michael@0: Version 1.2.2beta2 [February 23, 2002] michael@0: Check chunk_length and idat_size for invalid (over PNG_MAX_UINT) lengths. michael@0: Check for invalid image dimensions in png_get_IHDR. michael@0: Added missing "fi;" in the install target of the SGI makefiles. michael@0: Added install-static to all makefiles that make shared libraries. michael@0: Always do gamma compensation when image is partially transparent. michael@0: michael@0: Version 1.2.2beta3 [March 7, 2002] michael@0: Compute background.gray and background_1.gray even when color_type is RGB michael@0: in case image gets reduced to gray later. michael@0: Modified shared-library makefiles to install pkgconfig/libpngNN.pc. michael@0: Export (with PNGAPI) png_zalloc, png_zfree, and png_handle_as_unknown michael@0: Removed unused png_write_destroy_info prototype from png.h michael@0: Eliminated incorrect use of width_mmx from pnggccrd.c in pixel_bytes == 8 case michael@0: Added install-shared target to all makefiles that make shared libraries. michael@0: Stopped a double free of palette, hist, and trans when not using free_me. michael@0: Added makefile.32sunu for Sun Ultra 32 and makefile.64sunu for Sun Ultra 64. michael@0: michael@0: Version 1.2.2beta4 [March 8, 2002] michael@0: Compute background.gray and background_1.gray even when color_type is RGB michael@0: in case image gets reduced to gray later (Jason Summers). michael@0: Relocated a misplaced /bin/rm in the "install-shared" makefile targets michael@0: Added PNG_1_0_X macro which can be used to build a 1.0.x-compatible library. michael@0: michael@0: Version 1.2.2beta5 [March 26, 2002] michael@0: Added missing PNGAPI to several function definitions. michael@0: Check for invalid bit_depth or color_type in png_get_IHDR(), and michael@0: check for missing PLTE or IHDR in png_push_read_chunk() (Matthias Clasen). michael@0: Revised iTXt support to accept NULL for lang and lang_key. michael@0: Compute gamma for color components of background even when color_type is gray. michael@0: Changed "()" to "{}" in scripts/libpng.pc.in. michael@0: Revised makefiles to put png.h and pngconf.h only in $prefix/include/libpngNN michael@0: Revised makefiles to make symlink to libpng.so.NN in addition to libpngNN.so michael@0: michael@0: Version 1.2.2beta6 [March 31, 2002] michael@0: michael@0: Version 1.0.13beta1 [March 31, 2002] michael@0: Prevent png_zalloc() from trying to memset memory that it failed to acquire. michael@0: Add typecasts of PNG_MAX_UINT in pngset_cHRM_fixed() (Matt Holgate). michael@0: Ensure that the right function (user or default) is used to free the michael@0: png_struct after an error in png_create_read_struct_2(). michael@0: michael@0: Version 1.2.2rc1 [April 7, 2002] michael@0: michael@0: Version 1.0.13rc1 [April 7, 2002] michael@0: Save the ebx register in pnggccrd.c (Sami Farin) michael@0: Add "mem_ptr = png_ptr->mem_ptr" in png_destroy_write_struct() (Paul Gardner). michael@0: Updated makefiles to put headers in include/libpng and remove old include/*.h. michael@0: michael@0: Version 1.2.2 [April 15, 2002] michael@0: michael@0: Version 1.0.13 [April 15, 2002] michael@0: Revised description of png_set_filter() in libpng.3/libpng.txt. michael@0: Revised makefile.netbsd and added makefile.neNNbsd and makefile.freebsd michael@0: michael@0: Version 1.0.13patch01 [April 17, 2002] michael@0: michael@0: Version 1.2.2patch01 [April 17, 2002] michael@0: Changed ${PNGMAJ}.${PNGVER} bug to ${PNGVER} in makefile.sgi and michael@0: makefile.sggcc michael@0: Fixed VER -> PNGVER typo in makefile.macosx and added install-static to michael@0: install michael@0: Added install: target to makefile.32sunu and makefile.64sunu michael@0: michael@0: Version 1.0.13patch03 [April 18, 2002] michael@0: michael@0: Version 1.2.2patch03 [April 18, 2002] michael@0: Revised 15 makefiles to link libpng.a to libpngNN.a and the include libpng michael@0: subdirectory to libpngNN subdirectory without the full pathname. michael@0: Moved generation of libpng.pc from "install" to "all" in 15 makefiles. michael@0: michael@0: Version 1.2.3rc1 [April 28, 2002] michael@0: Added install-man target to 15 makefiles (Dimitri Papadopolous-Orfanos). michael@0: Added $(DESTDIR) feature to 24 makefiles (Tim Mooney) michael@0: Fixed bug with $prefix, should be $(prefix) in makefile.hpux. michael@0: Updated cygwin-specific portion of pngconf.h and revised makefile.cygwin michael@0: Added a link from libpngNN.pc to libpng.pc in 15 makefiles. michael@0: Added links from include/libpngNN/*.h to include/*.h in 24 makefiles. michael@0: Revised makefile.darwin to make relative links without full pathname. michael@0: Added setjmp() at the end of png_create_*_struct_2() in case user forgets michael@0: to put one in their application. michael@0: Restored png_zalloc() and png_zfree() prototypes to version 1.2.1 and michael@0: removed them from module definition files. michael@0: michael@0: Version 1.2.3rc2 [May 1, 2002] michael@0: Fixed bug in reporting number of channels in pngget.c and pngset.c, michael@0: that was introduced in version 1.2.2beta5. michael@0: Exported png_zalloc(), png_zfree(), png_default_read(), png_default_write(), michael@0: png_default_flush(), and png_push_fill_buffer() and included them in michael@0: module definition files. michael@0: Added "libpng.pc" dependency to the "install-shared" target in 15 makefiles. michael@0: michael@0: Version 1.2.3rc3 [May 1, 2002] michael@0: Revised prototype for png_default_flush() michael@0: Remove old libpng.pc and libpngNN.pc before installing new ones. michael@0: michael@0: Version 1.2.3rc4 [May 2, 2002] michael@0: Typos in *.def files (png_default_read|write -> png_default_read|write_data) michael@0: In makefiles, changed rm libpng.NN.pc to rm libpngNN.pc michael@0: Added libpng-config and libpngNN-config and modified makefiles to install michael@0: them. michael@0: Changed $(MANPATH) to $(DESTDIR)$(MANPATH) in makefiles michael@0: Added "Win32 DLL VB" configuration to projects/msvc/libpng.dsp michael@0: michael@0: Version 1.2.3rc5 [May 11, 2002] michael@0: Changed "error" and "message" in prototypes to "error_message" and michael@0: "warning_message" to avoid namespace conflict. michael@0: Revised 15 makefiles to build libpng-config from libpng-config-*.in michael@0: Once more restored png_zalloc and png_zfree to regular nonexported form. michael@0: Restored png_default_read|write_data, png_default_flush, png_read_fill_buffer michael@0: to nonexported form, but with PNGAPI, and removed them from module def michael@0: files. michael@0: michael@0: Version 1.2.3rc6 [May 14, 2002] michael@0: Removed "PNGAPI" from png_zalloc() and png_zfree() in png.c michael@0: Changed "Gz" to "Gd" in projects/msvc/libpng.dsp and zlib.dsp. michael@0: Removed leftover libpng-config "sed" script from four makefiles. michael@0: Revised libpng-config creating script in 16 makefiles. michael@0: michael@0: Version 1.2.3 [May 22, 2002] michael@0: Revised libpng-config target in makefile.cygwin. michael@0: Removed description of png_set_mem_fn() from documentation. michael@0: Revised makefile.freebsd. michael@0: Minor cosmetic changes to 15 makefiles, e.g., $(DI) = $(DESTDIR)/$(INCDIR). michael@0: Revised projects/msvc/README.txt michael@0: Changed -lpng to -lpngNN in LDFLAGS in several makefiles. michael@0: michael@0: Version 1.2.4beta1 [May 24, 2002] michael@0: Added libpng.pc and libpng-config to "all:" target in 16 makefiles. michael@0: Fixed bug in 16 makefiles: $(DESTDIR)/$(LIBPATH) to $(DESTDIR)$(LIBPATH) michael@0: Added missing "\" before closing double quote in makefile.gcmmx. michael@0: Plugged various memory leaks; added png_malloc_warn() and png_set_text_2() michael@0: functions. michael@0: michael@0: Version 1.2.4beta2 [June 25, 2002] michael@0: Plugged memory leak of png_ptr->current_text (Matt Holgate). michael@0: Check for buffer overflow before reading CRC in pngpread.c (Warwick Allison) michael@0: Added -soname to the loader flags in makefile.dec, makefile.sgi, and michael@0: makefile.sggcc. michael@0: Added "test-installed" target to makefile.linux, makefile.gcmmx, michael@0: makefile.sgi, and makefile.sggcc. michael@0: michael@0: Version 1.2.4beta3 [June 28, 2002] michael@0: Plugged memory leak of row_buf in pngtest.c when there is a png_error(). michael@0: Detect buffer overflow in pngpread.c when IDAT is corrupted with extra data. michael@0: Added "test-installed" target to makefile.32sunu, makefile.64sunu, michael@0: makefile.beos, makefile.darwin, makefile.dec, makefile.macosx, michael@0: makefile.solaris, makefile.hpux, makefile.hpgcc, and makefile.so9. michael@0: michael@0: Version 1.2.4rc1 and 1.0.14rc1 [July 2, 2002] michael@0: Added "test-installed" target to makefile.cygwin and makefile.sco. michael@0: Revised pnggccrd.c to be able to back out version 1.0.x via PNG_1_0_X macro. michael@0: michael@0: Version 1.2.4 and 1.0.14 [July 8, 2002] michael@0: Changed png_warning() to png_error() when width is too large to process. michael@0: michael@0: Version 1.2.4patch01 [July 20, 2002] michael@0: Revised makefile.cygwin to use DLL number 12 instead of 13. michael@0: michael@0: Version 1.2.5beta1 [August 6, 2002] michael@0: Added code to contrib/gregbook/readpng2.c to ignore unused chunks. michael@0: Replaced toucan.png in contrib/gregbook (it has been corrupt since 1.0.11) michael@0: Removed some stray *.o files from contrib/gregbook. michael@0: Changed png_error() to png_warning() about "Too much data" in pngpread.c michael@0: and about "Extra compressed data" in pngrutil.c. michael@0: Prevent png_ptr->pass from exceeding 7 in png_push_finish_row(). michael@0: Updated makefile.hpgcc michael@0: Updated png.c and pnggccrd.c handling of return from png_mmx_support() michael@0: michael@0: Version 1.2.5beta2 [August 15, 2002] michael@0: Only issue png_warning() about "Too much data" in pngpread.c when avail_in michael@0: is nonzero. michael@0: Updated makefiles to install a separate libpng.so.3 with its own rpath. michael@0: michael@0: Version 1.2.5rc1 and 1.0.15rc1 [August 24, 2002] michael@0: Revised makefiles to not remove previous minor versions of shared libraries. michael@0: michael@0: Version 1.2.5rc2 and 1.0.15rc2 [September 16, 2002] michael@0: Revised 13 makefiles to remove "-lz" and "-L$(ZLIBLIB)", etc., from shared michael@0: library loader directive. michael@0: Added missing "$OBJSDLL" line to makefile.gcmmx. michael@0: Added missing "; fi" to makefile.32sunu. michael@0: michael@0: Version 1.2.5rc3 and 1.0.15rc3 [September 18, 2002] michael@0: Revised libpng-config script. michael@0: michael@0: Version 1.2.5 and 1.0.15 [October 3, 2002] michael@0: Revised makefile.macosx, makefile.darwin, makefile.hpgcc, and makefile.hpux, michael@0: and makefile.aix. michael@0: Relocated two misplaced PNGAPI lines in pngtest.c michael@0: michael@0: Version 1.2.6beta1 [October 22, 2002] michael@0: Commented out warning about uninitialized mmx_support in pnggccrd.c. michael@0: Changed "IBMCPP__" flag to "__IBMCPP__" in pngconf.h. michael@0: Relocated two more misplaced PNGAPI lines in pngtest.c michael@0: Fixed memory overrun bug in png_do_read_filler() with 16-bit datastreams, michael@0: introduced in version 1.0.2. michael@0: Revised makefile.macosx, makefile.dec, makefile.aix, and makefile.32sunu. michael@0: michael@0: Version 1.2.6beta2 [November 1, 2002] michael@0: Added libpng-config "--ldopts" output. michael@0: Added "AR=ar" and "ARFLAGS=rc" and changed "ar rc" to "$(AR) $(ARFLAGS)" michael@0: in makefiles. michael@0: michael@0: Version 1.2.6beta3 [July 18, 2004] michael@0: Reverted makefile changes from version 1.2.6beta2 and some of the changes michael@0: from version 1.2.6beta1; these will be postponed until version 1.2.7. michael@0: Version 1.2.6 is going to be a simple bugfix release. michael@0: Changed the one instance of "ln -sf" to "ln -f -s" in each Sun makefile. michael@0: Fixed potential overrun in pngerror.c by using strncpy instead of memcpy. michael@0: Added "#!/bin/sh" at the top of configure, for recognition of the michael@0: 'x' flag under Cygwin (Cosmin). michael@0: Optimized vacuous tests that silence compiler warnings, in png.c (Cosmin). michael@0: Added support for PNG_USER_CONFIG, in pngconf.h (Cosmin). michael@0: Fixed the special memory handler for Borland C under DOS, in pngmem.c michael@0: (Cosmin). michael@0: Removed some spurious assignments in pngrutil.c (Cosmin). michael@0: Replaced 65536 with 65536L, and 0xffff with 0xffffL, to silence warnings michael@0: on 16-bit platforms (Cosmin). michael@0: Enclosed shift op expressions in parentheses, to silence warnings (Cosmin). michael@0: Used proper type png_fixed_point, to avoid problems on 16-bit platforms, michael@0: in png_handle_sRGB() (Cosmin). michael@0: Added compression_type to png_struct, and optimized the window size michael@0: inside the deflate stream (Cosmin). michael@0: Fixed definition of isnonalpha(), in pngerror.c and pngrutil.c (Cosmin). michael@0: Fixed handling of unknown chunks that come after IDAT (Cosmin). michael@0: Allowed png_error() and png_warning() to work even if png_ptr == NULL michael@0: (Cosmin). michael@0: Replaced row_info->rowbytes with row_bytes in png_write_find_filter() michael@0: (Cosmin). michael@0: Fixed definition of PNG_LIBPNG_VER_DLLNUM (Simon-Pierre). michael@0: Used PNG_LIBPNG_VER and PNG_LIBPNG_VER_STRING instead of the hardcoded michael@0: values in png.c (Simon-Pierre, Cosmin). michael@0: Initialized png_libpng_ver[] with PNG_LIBPNG_VER_STRING (Simon-Pierre). michael@0: Replaced PNG_LIBPNG_VER_MAJOR with PNG_LIBPNG_VER_DLLNUM in png.rc michael@0: (Simon-Pierre). michael@0: Moved the definition of PNG_HEADER_VERSION_STRING near the definitions michael@0: of the other PNG_LIBPNG_VER_... symbols in png.h (Cosmin). michael@0: Relocated #ifndef PNGAPI guards in pngconf.h (Simon-Pierre, Cosmin). michael@0: Updated scripts/makefile.vc(a)win32 (Cosmin). michael@0: Updated the MSVC project (Simon-Pierre, Cosmin). michael@0: Updated the Borland C++ Builder project (Cosmin). michael@0: Avoided access to asm_flags in pngvcrd.c, if PNG_1_0_X is defined (Cosmin). michael@0: Commented out warning about uninitialized mmx_support in pngvcrd.c (Cosmin). michael@0: Removed scripts/makefile.bd32 and scripts/pngdef.pas (Cosmin). michael@0: Added extra guard around inclusion of Turbo C memory headers, in pngconf.h michael@0: (Cosmin). michael@0: Renamed projects/msvc/ to projects/visualc6/, and projects/borland/ to michael@0: projects/cbuilder5/ (Cosmin). michael@0: Moved projects/visualc6/png32ms.def to scripts/pngw32.def, michael@0: and projects/visualc6/png.rc to scripts/pngw32.rc (Cosmin). michael@0: Added projects/visualc6/pngtest.dsp; removed contrib/msvctest/ (Cosmin). michael@0: Changed line endings to DOS style in cbuilder5 and visualc6 files, even michael@0: in the tar.* distributions (Cosmin). michael@0: Updated contrib/visupng/VisualPng.dsp (Cosmin). michael@0: Updated contrib/visupng/cexcept.h to version 2.0.0 (Cosmin). michael@0: Added a separate distribution with "configure" and supporting files (Junichi). michael@0: michael@0: Version 1.2.6beta4 [July 28, 2004] michael@0: Added user ability to change png_size_t via a PNG_SIZE_T macro. michael@0: Added png_sizeof() and png_convert_size() functions. michael@0: Added PNG_SIZE_MAX (maximum value of a png_size_t variable. michael@0: Added check in png_malloc_default() for (size_t)size != (png_uint_32)size michael@0: which would indicate an overflow. michael@0: Changed sPLT failure action from png_error to png_warning and abandon chunk. michael@0: Changed sCAL and iCCP failures from png_error to png_warning and abandon. michael@0: Added png_get_uint_31(png_ptr, buf) function. michael@0: Added PNG_UINT_32_MAX macro. michael@0: Renamed PNG_MAX_UINT to PNG_UINT_31_MAX. michael@0: Made png_zalloc() issue a png_warning and return NULL on potential michael@0: overflow. michael@0: Turn on PNG_NO_ZALLOC_ZERO by default in version 1.2.x michael@0: Revised "clobber list" in pnggccrd.c so it will compile under gcc-3.4. michael@0: Revised Borland portion of png_malloc() to return NULL or issue michael@0: png_error() according to setting of PNG_FLAG_MALLOC_NULL_MEM_OK. michael@0: Added PNG_NO_SEQUENTIAL_READ_SUPPORTED macro to conditionally remove michael@0: sequential read support. michael@0: Added some "#if PNG_WRITE_SUPPORTED" blocks. michael@0: Added #ifdef to remove some redundancy in png_malloc_default(). michael@0: Use png_malloc instead of png_zalloc to allocate the pallete. michael@0: michael@0: Version 1.0.16rc1 and 1.2.6rc1 [August 4, 2004] michael@0: Fixed buffer overflow vulnerability in png_handle_tRNS() michael@0: Fixed integer arithmetic overflow vulnerability in png_read_png(). michael@0: Fixed some harmless bugs in png_handle_sBIT, etc, that would cause michael@0: duplicate chunk types to go undetected. michael@0: Fixed some timestamps in the -config version michael@0: Rearranged order of processing of color types in png_handle_tRNS(). michael@0: Added ROWBYTES macro to calculate rowbytes without integer overflow. michael@0: Updated makefile.darwin and removed makefile.macosx from scripts directory. michael@0: Imposed default one million column, one-million row limits on the image michael@0: dimensions, and added png_set_user_limits() function to override them. michael@0: Revised use of PNG_SET_USER_LIMITS_SUPPORTED macro. michael@0: Fixed wrong cast of returns from png_get_user_width|height_max(). michael@0: Changed some "keep the compiler happy" from empty statements to returns, michael@0: Revised libpng.txt to remove 1.2.x stuff from the 1.0.x distribution michael@0: michael@0: Version 1.0.16rc2 and 1.2.6rc2 [August 7, 2004] michael@0: Revised makefile.darwin and makefile.solaris. Removed makefile.macosx. michael@0: Revised pngtest's png_debug_malloc() to use png_malloc() instead of michael@0: png_malloc_default() which is not supposed to be exported. michael@0: Fixed off-by-one error in one of the conversions to PNG_ROWBYTES() in michael@0: pngpread.c. Bug was introduced in 1.2.6rc1. michael@0: Fixed bug in RGB to RGBX transformation introduced in 1.2.6rc1. michael@0: Fixed old bug in RGB to Gray transformation. michael@0: Fixed problem with 64-bit compilers by casting arguments to abs() michael@0: to png_int_32. michael@0: Changed "ln -sf" to "ln -f -s" in three makefiles (solaris, sco, so9). michael@0: Changed "HANDLE_CHUNK_*" to "PNG_HANDLE_CHUNK_*" (Cosmin) michael@0: Added "-@/bin/rm -f $(DL)/$(LIBNAME).so.$(PNGMAJ)" to 15 *NIX makefiles. michael@0: Added code to update the row_info->colortype in png_do_read_filler() (MSB). michael@0: michael@0: Version 1.0.16rc3 and 1.2.6rc3 [August 9, 2004] michael@0: Eliminated use of "abs()" in testing cHRM and gAMA values, to avoid michael@0: trouble with some 64-bit compilers. Created PNG_OUT_OF_RANGE() macro. michael@0: Revised documentation of png_set_keep_unknown_chunks(). michael@0: Check handle_as_unknown status in pngpread.c, as in pngread.c previously. michael@0: Moved "PNG_HANDLE_CHUNK_*" macros out of PNG_INTERNAL section of png.h michael@0: Added "rim" definitions for CONST4 and CONST6 in pnggccrd.c michael@0: michael@0: Version 1.0.16rc4 and 1.2.6rc4 [August 10, 2004] michael@0: Fixed mistake in pngtest.c introduced in 1.2.6rc2 (declaration of michael@0: "pinfo" was out of place). michael@0: michael@0: Version 1.0.16rc5 and 1.2.6rc5 [August 10, 2004] michael@0: Moved "PNG_HANDLE_CHUNK_*" macros out of PNG_ASSEMBLER_CODE_SUPPORTED michael@0: section of png.h where they were inadvertently placed in version rc3. michael@0: michael@0: Version 1.2.6 and 1.0.16 [August 15, 2004] michael@0: Revised pngtest so memory allocation testing is only done when PNG_DEBUG==1. michael@0: michael@0: Version 1.2.7beta1 [August 26, 2004] michael@0: Removed unused pngasmrd.h file. michael@0: Removed references to uu.net for archived files. Added references to michael@0: PNG Spec (second edition) and the PNG ISO/IEC Standard. michael@0: Added "test-dd" target in 15 makefiles, to run pngtest in DESTDIR. michael@0: Fixed bug with "optimized window size" in the IDAT datastream, that michael@0: causes libpng to write PNG files with incorrect zlib header bytes. michael@0: michael@0: Version 1.2.7beta2 [August 28, 2004] michael@0: Fixed bug with sCAL chunk and big-endian machines (David Munro). michael@0: Undid new code added in 1.2.6rc2 to update the color_type in michael@0: png_set_filler(). michael@0: Added png_set_add_alpha() that updates color type. michael@0: michael@0: Version 1.0.17rc1 and 1.2.7rc1 [September 4, 2004] michael@0: Revised png_set_strip_filler() to not remove alpha if color_type has alpha. michael@0: michael@0: Version 1.2.7 and 1.0.17 [September 12, 2004] michael@0: Added makefile.hp64 michael@0: Changed projects/msvc/png32ms.def to scripts/png32ms.def in makefile.cygwin michael@0: michael@0: Version 1.2.8beta1 [November 1, 2004] michael@0: Fixed bug in png_text_compress() that would fail to complete a large block. michael@0: Fixed bug, introduced in libpng-1.2.7, that overruns a buffer during michael@0: strip alpha operation in png_do_strip_filler(). michael@0: Added PNG_1_2_X definition in pngconf.h michael@0: Use #ifdef to comment out png_info_init in png.c and png_read_init in michael@0: pngread.c (as of 1.3.0) michael@0: michael@0: Version 1.2.8beta2 [November 2, 2004] michael@0: Reduce color_type to a nonalpha type after strip alpha operation in michael@0: png_do_strip_filler(). michael@0: michael@0: Version 1.2.8beta3 [November 3, 2004] michael@0: Revised definitions of PNG_MAX_UINT_32, PNG_MAX_SIZE, and PNG_MAXSUM michael@0: michael@0: Version 1.2.8beta4 [November 12, 2004] michael@0: Fixed (again) definition of PNG_LIBPNG_VER_DLLNUM in png.h (Cosmin). michael@0: Added PNG_LIBPNG_BUILD_PRIVATE in png.h (Cosmin). michael@0: Set png_ptr->zstream.data_type to Z_BINARY, to avoid unnecessary detection michael@0: of data type in deflate (Cosmin). michael@0: Deprecated but continue to support SPECIALBUILD and PRIVATEBUILD in favor of michael@0: PNG_LIBPNG_BUILD_SPECIAL_STRING and PNG_LIBPNG_BUILD_PRIVATE_STRING. michael@0: michael@0: Version 1.2.8beta5 [November 20, 2004] michael@0: Use png_ptr->flags instead of png_ptr->transformations to pass michael@0: PNG_STRIP_ALPHA info to png_do_strip_filler(), to preserve ABI michael@0: compatibility. michael@0: Revised handling of SPECIALBUILD, PRIVATEBUILD, michael@0: PNG_LIBPNG_BUILD_SPECIAL_STRING and PNG_LIBPNG_BUILD_PRIVATE_STRING. michael@0: michael@0: Version 1.2.8rc1 [November 24, 2004] michael@0: Moved handling of BUILD macros from pngconf.h to png.h michael@0: Added definition of PNG_LIBPNG_BASE_TYPE in png.h, inadvertently michael@0: omitted from beta5. michael@0: Revised scripts/pngw32.rc michael@0: Despammed mailing addresses by masking "@" with "at". michael@0: Inadvertently installed a supposedly faster test version of pngrutil.c michael@0: michael@0: Version 1.2.8rc2 [November 26, 2004] michael@0: Added two missing "\" in png.h michael@0: Change tests in pngread.c and pngpread.c to michael@0: if (png_ptr->transformations || (png_ptr->flags&PNG_FLAG_STRIP_ALPHA)) michael@0: png_do_read_transformations(png_ptr); michael@0: michael@0: Version 1.2.8rc3 [November 28, 2004] michael@0: Reverted pngrutil.c to version libpng-1.2.8beta5. michael@0: Added scripts/makefile.elf with supporting code in pngconf.h for symbol michael@0: versioning (John Bowler). michael@0: michael@0: Version 1.2.8rc4 [November 29, 2004] michael@0: Added projects/visualc7 (Simon-pierre). michael@0: michael@0: Version 1.2.8rc5 [November 29, 2004] michael@0: Fixed new typo in scripts/pngw32.rc michael@0: michael@0: Version 1.2.8 [December 3, 2004] michael@0: Removed projects/visualc7, added projects/visualc71. michael@0: michael@0: Version 1.2.9beta1 [February 21, 2006] michael@0: Initialized some structure members in pngwutil.c to avoid gcc-4.0.0 complaints michael@0: Revised man page and libpng.txt to make it clear that one should not call michael@0: png_read_end or png_write_end after png_read_png or png_write_png. michael@0: Updated references to png-mng-implement mailing list. michael@0: Fixed an incorrect typecast in pngrutil.c michael@0: Added PNG_NO_READ_SUPPORTED conditional for making a write-only library. michael@0: Added PNG_NO_WRITE_INTERLACING_SUPPORTED conditional. michael@0: Optimized alpha-inversion loops in pngwtran.c michael@0: Moved test for nonzero gamma outside of png_build_gamma_table() in pngrtran.c michael@0: Make sure num_trans is <= 256 before copying data in png_set_tRNS(). michael@0: Make sure num_palette is <= 256 before copying data in png_set_PLTE(). michael@0: Interchanged order of write_swap_alpha and write_invert_alpha transforms. michael@0: Added parentheses in the definition of PNG_LIBPNG_BUILD_TYPE (Cosmin). michael@0: Optimized zlib window flag (CINFO) in contrib/pngsuite/*.png (Cosmin). michael@0: Updated scripts/makefile.bc32 for Borland C++ 5.6 (Cosmin). michael@0: Exported png_get_uint_32, png_save_uint_32, png_get_uint_16, png_save_uint_16, michael@0: png_get_int_32, png_save_int_32, png_get_uint_31 (Cosmin). michael@0: Added type cast (png_byte) in png_write_sCAL() (Cosmin). michael@0: Fixed scripts/makefile.cygwin (Christian Biesinger, Cosmin). michael@0: Default iTXt support was inadvertently enabled. michael@0: michael@0: Version 1.2.9beta2 [February 21, 2006] michael@0: Check for png_rgb_to_gray and png_gray_to_rgb read transformations before michael@0: checking for png_read_dither in pngrtran.c michael@0: Revised checking of chromaticity limits to accommodate extended RGB michael@0: colorspace (John Denker). michael@0: Changed line endings in some of the project files to CRLF, even in the michael@0: "Unix" tar distributions (Cosmin). michael@0: Made png_get_int_32 and png_save_int_32 always available (Cosmin). michael@0: Updated scripts/pngos2.def, scripts/pngw32.def and projects/wince/png32ce.def michael@0: with the newly exported functions. michael@0: Eliminated distributions without the "configure" script. michael@0: Updated INSTALL instructions. michael@0: michael@0: Version 1.2.9beta3 [February 24, 2006] michael@0: Fixed CRCRLF line endings in contrib/visupng/VisualPng.dsp michael@0: Made libpng.pc respect EXEC_PREFIX (D. P. Kreil, J. Bowler) michael@0: Removed reference to pngasmrd.h from Makefile.am michael@0: Renamed CHANGES to ChangeLog. michael@0: Renamed LICENSE to COPYING. michael@0: Renamed ANNOUNCE to NEWS. michael@0: Created AUTHORS file. michael@0: michael@0: Version 1.2.9beta4 [March 3, 2006] michael@0: Changed definition of PKGCONFIG from $prefix/lib to $libdir in configure.ac michael@0: Reverted to filenames LICENSE and ANNOUNCE; removed AUTHORS and COPYING. michael@0: Removed newline from the end of some error and warning messages. michael@0: Removed test for sqrt() from configure.ac and configure. michael@0: Made swap tables in pngtrans.c PNG_CONST (Carlo Bramix). michael@0: Disabled default iTXt support that was inadvertently enabled in michael@0: libpng-1.2.9beta1. michael@0: Added "OS2" to list of systems that don't need underscores, in pnggccrd.c michael@0: Removed libpng version and date from *.c files. michael@0: michael@0: Version 1.2.9beta5 [March 4, 2006] michael@0: Removed trailing blanks from source files. michael@0: Put version and date of latest change in each source file, and changed michael@0: copyright year accordingly. michael@0: More cleanup of configure.ac, Makefile.am, and associated scripts. michael@0: Restored scripts/makefile.elf which was inadvertently deleted. michael@0: michael@0: Version 1.2.9beta6 [March 6, 2006] michael@0: Fixed typo (RELEASE) in configuration files. michael@0: michael@0: Version 1.2.9beta7 [March 7, 2006] michael@0: Removed libpng.vers and libpng.sym from libpng12_la_SOURCES in Makefile.am michael@0: Fixed inconsistent #ifdef's around png_sig_bytes() and png_set_sCAL_s() michael@0: in png.h. michael@0: Updated makefile.elf as suggested by debian. michael@0: Made cosmetic changes to some makefiles, adding LN_SF and other macros. michael@0: Made some makefiles accept "exec_prefix". michael@0: michael@0: Version 1.2.9beta8 [March 9, 2006] michael@0: Fixed some "#if defined (..." which should be "#if defined(..." michael@0: Bug introduced in libpng-1.2.8. michael@0: Fixed inconsistency in definition of png_default_read_data() michael@0: Restored blank that was lost from makefile.sggcc "clean" target in beta7. michael@0: Revised calculation of "current" and "major" for irix in ltmain.sh michael@0: Changed "mkdir" to "MKDIR_P" in some makefiles. michael@0: Separated PNG_EXPAND and PNG_EXPAND_tRNS. michael@0: Added png_set_expand_gray_1_2_4_to_8() and deprecated michael@0: png_set_gray_1_2_4_to_8() which also expands tRNS to alpha. michael@0: michael@0: Version 1.2.9beta9 [March 10, 2006] michael@0: Include "config.h" in pngconf.h when available. michael@0: Added some checks for NULL png_ptr or NULL info_ptr (timeless) michael@0: michael@0: Version 1.2.9beta10 [March 20, 2006] michael@0: Removed extra CR from contrib/visualpng/VisualPng.dsw (Cosmin) michael@0: Made pnggccrd.c PIC-compliant (Christian Aichinger). michael@0: Added makefile.mingw (Wolfgang Glas). michael@0: Revised pngconf.h MMX checking. michael@0: michael@0: Version 1.2.9beta11 [March 22, 2006] michael@0: Fixed out-of-order declaration in pngwrite.c that was introduced in beta9 michael@0: Simplified some makefiles by using LIBSO, LIBSOMAJ, and LIBSOVER macros. michael@0: michael@0: Version 1.2.9rc1 [March 31, 2006] michael@0: Defined PNG_USER_PRIVATEBUILD when including "pngusr.h" (Cosmin). michael@0: Removed nonsensical assertion check from pngtest.c (Cosmin). michael@0: michael@0: Version 1.2.9 [April 14, 2006] michael@0: Revised makefile.beos and added "none" selector in ltmain.sh michael@0: michael@0: Version 1.2.10beta1 [April 15, 2006] michael@0: Renamed "config.h" to "png_conf.h" and revised Makefile.am to add michael@0: -DPNG_BUILDING_LIBPNG to compile directive, and modified pngconf.h michael@0: to include png_conf.h only when PNG_BUILDING_LIBPNG is defined. michael@0: michael@0: Version 1.2.10beta2 [April 15, 2006] michael@0: Manually updated Makefile.in and configure. Changed png_conf.h.in michael@0: back to config.h. michael@0: michael@0: Version 1.2.10beta3 [April 15, 2006] michael@0: Change png_conf.h back to config.h in pngconf.h. michael@0: michael@0: Version 1.2.10beta4 [April 16, 2006] michael@0: Change PNG_BUILDING_LIBPNG to PNG_CONFIGURE_LIBPNG in config/Makefile*. michael@0: michael@0: Version 1.2.10beta5 [April 16, 2006] michael@0: Added a configure check for compiling assembler code in pnggccrd.c michael@0: michael@0: Version 1.2.10beta6 [April 17, 2006] michael@0: Revised the configure check for pnggccrd.c michael@0: Moved -DPNG_CONFIGURE_LIBPNG into @LIBPNG_DEFINES@ michael@0: Added @LIBPNG_DEFINES@ to arguments when building libpng.sym michael@0: michael@0: Version 1.2.10beta7 [April 18, 2006] michael@0: Change "exec_prefix=$prefix" to "exec_prefix=$(prefix)" in makefiles. michael@0: michael@0: Version 1.2.10rc1 [April 19, 2006] michael@0: Ensure pngconf.h doesn't define both PNG_USE_PNGGCCRD and PNG_USE_PNGVCRD michael@0: Fixed "LN_FS" typo in makefile.sco and makefile.solaris. michael@0: michael@0: Version 1.2.10rc2 [April 20, 2006] michael@0: Added a backslash between -DPNG_CONFIGURE_LIBPNG and -DPNG_NO_ASSEMBLER_CODE michael@0: in configure.ac and configure michael@0: Made the configure warning about versioned symbols less arrogant. michael@0: michael@0: Version 1.2.10rc3 [April 21, 2006] michael@0: Added a note in libpng.txt that png_set_sig_bytes(8) can be used when michael@0: writing an embedded PNG without the 8-byte signature. michael@0: Revised makefiles and configure to avoid making links to libpng.so.* michael@0: michael@0: Version 1.2.10 [April 23, 2006] michael@0: Reverted configure to "rc2" state. michael@0: michael@0: Version 1.2.11beta1 [May 31, 2006] michael@0: scripts/libpng.pc.in contained "configure" style version info and would michael@0: not work with makefiles. michael@0: The shared-library makefiles were linking to libpng.so.0 instead of michael@0: libpng.so.3 compatibility as the library. michael@0: michael@0: Version 1.2.11beta2 [June 2, 2006] michael@0: Increased sprintf buffer from 50 to 52 chars in pngrutil.c to avoid michael@0: buffer overflow. michael@0: Fixed bug in example.c (png_set_palette_rgb -> png_set_palette_to_rgb) michael@0: michael@0: Version 1.2.11beta3 [June 5, 2006] michael@0: Prepended "#! /bin/sh" to ltmail.sh and contrib/pngminus/*.sh (Cosmin). michael@0: Removed the accidental leftover Makefile.in~ (Cosmin). michael@0: Avoided potential buffer overflow and optimized buffer in michael@0: png_write_sCAL(), png_write_sCAL_s() (Cosmin). michael@0: Removed the include directories and libraries from CFLAGS and LDFLAGS michael@0: in scripts/makefile.gcc (Nelson A. de Oliveira, Cosmin). michael@0: michael@0: Version 1.2.11beta4 [June 6, 2006] michael@0: Allow zero-length IDAT chunks after the entire zlib datastream, but not michael@0: after another intervening chunk type. michael@0: michael@0: Version 1.0.19rc1, 1.2.11rc1 [June 13, 2006] michael@0: Deleted extraneous square brackets from [config.h] in configure.ac michael@0: michael@0: Version 1.0.19rc2, 1.2.11rc2 [June 14, 2006] michael@0: Added prototypes for PNG_INCH_CONVERSIONS functions to png.h michael@0: Revised INSTALL and autogen.sh michael@0: Fixed typo in several makefiles (-W1 should be -Wl) michael@0: Added typedef for png_int_32 and png_uint_32 on 64-bit systems. michael@0: michael@0: Version 1.0.19rc3, 1.2.11rc3 [June 15, 2006] michael@0: Removed the new typedefs for 64-bit systems (delay until version 1.4.0) michael@0: Added one zero element to png_gamma_shift[] array in pngrtran.c to avoid michael@0: reading out of bounds. michael@0: michael@0: Version 1.0.19rc4, 1.2.11rc4 [June 15, 2006] michael@0: Really removed the new typedefs for 64-bit systems. michael@0: michael@0: Version 1.0.19rc5, 1.2.11rc5 [June 22, 2006] michael@0: Removed png_sig_bytes entry from scripts/pngw32.def michael@0: michael@0: Version 1.0.19, 1.2.11 [June 26, 2006] michael@0: None. michael@0: michael@0: Version 1.0.20, 1.2.12 [June 27, 2006] michael@0: Really increased sprintf buffer from 50 to 52 chars in pngrutil.c to avoid michael@0: buffer overflow. michael@0: michael@0: Version 1.2.13beta1 [October 2, 2006] michael@0: Removed AC_FUNC_MALLOC from configure.ac michael@0: Work around Intel-Mac compiler bug by setting PNG_NO_MMX_CODE in pngconf.h michael@0: Change "logical" to "bitwise" throughout documentation. michael@0: Detect and fix attempt to write wrong iCCP profile length (CVE-2006-7244) michael@0: michael@0: Version 1.0.21, 1.2.13 [November 14, 2006] michael@0: Fix potential buffer overflow in sPLT chunk handler. michael@0: Fix Makefile.am to not try to link to noexistent files. michael@0: Check all exported functions for NULL png_ptr. michael@0: michael@0: Version 1.2.14beta1 [November 17, 2006] michael@0: Relocated three misplaced tests for NULL png_ptr. michael@0: Built Makefile.in with automake-1.9.6 instead of 1.9.2. michael@0: Build configure with autoconf-2.60 instead of 2.59 michael@0: michael@0: Version 1.2.14beta2 [November 17, 2006] michael@0: Added some typecasts in png_zalloc(). michael@0: michael@0: Version 1.2.14rc1 [November 20, 2006] michael@0: Changed "strtod" to "png_strtod" in pngrutil.c michael@0: michael@0: Version 1.0.22, 1.2.14 [November 27, 2006] michael@0: Added missing "$(srcdir)" in Makefile.am and Makefile.in michael@0: michael@0: Version 1.2.15beta1 [December 3, 2006] michael@0: Generated configure with autoconf-2.61 instead of 2.60 michael@0: Revised configure.ac to update libpng.pc and libpng-config. michael@0: michael@0: Version 1.2.15beta2 [December 3, 2006] michael@0: Always export MMX asm functions, just stubs if not building pnggccrd.c michael@0: michael@0: Version 1.2.15beta3 [December 4, 2006] michael@0: Add "png_bytep" typecast to profile while calculating length in pngwutil.c michael@0: michael@0: Version 1.2.15beta4 [December 7, 2006] michael@0: Added scripts/CMakeLists.txt michael@0: Changed PNG_NO_ASSEMBLER_CODE to PNG_NO_MMX_CODE in scripts, like 1.4.0beta michael@0: michael@0: Version 1.2.15beta5 [December 7, 2006] michael@0: Changed some instances of PNG_ASSEMBLER_* to PNG_MMX_* in pnggccrd.c michael@0: Revised scripts/CMakeLists.txt michael@0: michael@0: Version 1.2.15beta6 [December 13, 2006] michael@0: Revised scripts/CMakeLists.txt and configure.ac michael@0: michael@0: Version 1.2.15rc1 [December 18, 2006] michael@0: Revised scripts/CMakeLists.txt michael@0: michael@0: Version 1.2.15rc2 [December 21, 2006] michael@0: Added conditional #undef jmpbuf in pngtest.c to undo #define in AIX headers. michael@0: Added scripts/makefile.nommx michael@0: michael@0: Version 1.2.15rc3 [December 25, 2006] michael@0: Fixed shared library numbering error that was introduced in 1.2.15beta6. michael@0: michael@0: Version 1.2.15rc4 [December 27, 2006] michael@0: Fixed handling of rgb_to_gray when png_ptr->color.gray isn't set. michael@0: michael@0: Version 1.2.15rc5 [December 31, 2006] michael@0: Revised handling of rgb_to_gray. michael@0: michael@0: Version 1.2.15 [January 5, 2007] michael@0: Added some (unsigned long) typecasts in pngtest.c to avoid printing errors. michael@0: michael@0: Version 1.2.16beta1 [January 6, 2007] michael@0: Fix bugs in makefile.nommx michael@0: michael@0: Version 1.2.16beta2 [January 16, 2007] michael@0: Revised scripts/CMakeLists.txt michael@0: michael@0: Version 1.2.16 [January 31, 2007] michael@0: No changes. michael@0: michael@0: Version 1.2.17beta1 [March 6, 2007] michael@0: Revised scripts/CMakeLists.txt to install both shared and static libraries. michael@0: Deleted a redundant line from pngset.c. michael@0: michael@0: Version 1.2.17beta2 [April 26, 2007] michael@0: Relocated misplaced test for png_ptr == NULL in pngpread.c michael@0: Change "==" to "&" for testing PNG_RGB_TO_GRAY_ERR & PNG_RGB_TO_GRAY_WARN michael@0: flags. michael@0: Changed remaining instances of PNG_ASSEMBLER_* to PNG_MMX_* michael@0: Added pngerror() when write_IHDR fails in deflateInit2(). michael@0: Added "const" to some array declarations. michael@0: Mention examples of libpng usage in the libpng*.txt and libpng.3 documents. michael@0: michael@0: Version 1.2.17rc1 [May 4, 2007] michael@0: No changes. michael@0: michael@0: Version 1.2.17rc2 [May 8, 2007] michael@0: Moved several PNG_HAVE_* macros out of PNG_INTERNAL because applications michael@0: calling set_unknown_chunk_location() need them. michael@0: Changed transformation flag from PNG_EXPAND_tRNS to PNG_EXPAND in michael@0: png_set_expand_gray_1_2_4_to_8(). michael@0: Added png_ptr->unknown_chunk to hold working unknown chunk data, so it michael@0: can be free'ed in case of error. Revised unknown chunk handling in michael@0: pngrutil.c and pngpread.c to use this structure. michael@0: michael@0: Version 1.2.17rc3 [May 8, 2007] michael@0: Revised symbol-handling in configure script. michael@0: michael@0: Version 1.2.17rc4 [May 10, 2007] michael@0: Revised unknown chunk handling to avoid storing unknown critical chunks. michael@0: michael@0: Version 1.0.25 [May 15, 2007] michael@0: Version 1.2.17 [May 15, 2007] michael@0: Added "png_ptr->num_trans=0" before error return in png_handle_tRNS, michael@0: to eliminate a vulnerability (CVE-2007-2445, CERT VU#684664) michael@0: michael@0: Version 1.0.26 [May 15, 2007] michael@0: Version 1.2.18 [May 15, 2007] michael@0: Reverted the libpng-1.2.17rc3 change to symbol-handling in configure script michael@0: michael@0: Version 1.2.19beta1 [May 18, 2007] michael@0: Changed "const static" to "static PNG_CONST" everywhere, mostly undoing michael@0: change of libpng-1.2.17beta2. Changed other "const" to "PNG_CONST" michael@0: Changed some handling of unused parameters, to avoid compiler warnings. michael@0: "if (unused == NULL) return;" becomes "unused = unused". michael@0: michael@0: Version 1.2.19beta2 [May 18, 2007] michael@0: Only use the valid bits of tRNS value in png_do_expand() (Brian Cartier) michael@0: michael@0: Version 1.2.19beta3 [May 19, 2007] michael@0: Add some "png_byte" typecasts in png_check_keyword() and write new_key michael@0: instead of key in zTXt chunk (Kevin Ryde). michael@0: michael@0: Version 1.2.19beta4 [May 21, 2007] michael@0: Add png_snprintf() function and use it in place of sprint() for improved michael@0: defense against buffer overflows. michael@0: michael@0: Version 1.2.19beta5 [May 21, 2007] michael@0: Fixed png_handle_tRNS() to only use the valid bits of tRNS value. michael@0: Changed handling of more unused parameters, to avoid compiler warnings. michael@0: Removed some PNG_CONST in pngwutil.c to avoid compiler warnings. michael@0: michael@0: Version 1.2.19beta6 [May 22, 2007] michael@0: Added some #ifdef PNG_MMX_CODE_SUPPORTED where needed in pngvcrd.c michael@0: Added a special "_MSC_VER" case that defines png_snprintf to _snprintf michael@0: michael@0: Version 1.2.19beta7 [May 22, 2007] michael@0: Squelched png_squelch_warnings() in pnggccrd.c and added michael@0: an #ifdef PNG_MMX_CODE_SUPPORTED block around the declarations that caused michael@0: the warnings that png_squelch_warnings was squelching. michael@0: michael@0: Version 1.2.19beta8 [May 22, 2007] michael@0: Removed __MMX__ from test in pngconf.h. michael@0: michael@0: Version 1.2.19beta9 [May 23, 2007] michael@0: Made png_squelch_warnings() available via PNG_SQUELCH_WARNINGS macro. michael@0: Revised png_squelch_warnings() so it might work. michael@0: Updated makefile.sgcc and makefile.solaris; added makefile.solaris-x86. michael@0: michael@0: Version 1.2.19beta10 [May 24, 2007] michael@0: Resquelched png_squelch_warnings(), use "__attribute__((used))" instead. michael@0: michael@0: Version 1.4.0beta1 [April 20, 2006] michael@0: Enabled iTXt support (changes png_struct, thus requires so-number change). michael@0: Cleaned up PNG_ASSEMBLER_CODE_SUPPORTED vs PNG_MMX_CODE_SUPPORTED michael@0: Eliminated PNG_1_0_X and PNG_1_2_X macros. michael@0: Removed deprecated functions png_read_init, png_write_init, png_info_init, michael@0: png_permit_empty_plte, png_set_gray_1_2_4_to_8, png_check_sig, and michael@0: removed the deprecated macro PNG_MAX_UINT. michael@0: Moved "PNG_INTERNAL" parts of png.h and pngconf.h into pngintrn.h michael@0: Removed many WIN32_WCE #ifdefs (Cosmin). michael@0: Reduced dependency on C-runtime library when on Windows (Simon-Pierre) michael@0: Replaced sprintf() with png_sprintf() (Simon-Pierre) michael@0: michael@0: Version 1.4.0beta2 [April 20, 2006] michael@0: Revised makefiles and configure to avoid making links to libpng.so.* michael@0: Moved some leftover MMX-related defines from pngconf.h to pngintrn.h michael@0: Updated scripts/pngos2.def, pngw32.def, and projects/wince/png32ce.def michael@0: michael@0: Version 1.4.0beta3 [May 10, 2006] michael@0: Updated scripts/pngw32.def to comment out MMX functions. michael@0: Added PNG_NO_GET_INT_32 and PNG_NO_SAVE_INT_32 macros. michael@0: Scripts/libpng.pc.in contained "configure" style version info and would michael@0: not work with makefiles. michael@0: Revised pngconf.h and added pngconf.h.in, so makefiles and configure can michael@0: pass defines to libpng and applications. michael@0: michael@0: Version 1.4.0beta4 [May 11, 2006] michael@0: Revised configure.ac, Makefile.am, and many of the makefiles to write michael@0: their defines in pngconf.h. michael@0: michael@0: Version 1.4.0beta5 [May 15, 2006] michael@0: Added a missing semicolon in Makefile.am and Makefile.in michael@0: Deleted extraneous square brackets from configure.ac michael@0: michael@0: Version 1.4.0beta6 [June 2, 2006] michael@0: Increased sprintf buffer from 50 to 52 chars in pngrutil.c to avoid michael@0: buffer overflow. michael@0: Changed sonum from 0 to 1. michael@0: Removed unused prototype for png_check_sig() from png.h michael@0: michael@0: Version 1.4.0beta7 [June 16, 2006] michael@0: Exported png_write_sig (Cosmin). michael@0: Optimized buffer in png_handle_cHRM() (Cosmin). michael@0: Set pHYs = 2835 x 2835 pixels per meter, and added michael@0: sCAL = 0.352778e-3 x 0.352778e-3 meters, in pngtest.png (Cosmin). michael@0: Added png_set_benign_errors(), png_benign_error(), png_chunk_benign_error(). michael@0: Added typedef for png_int_32 and png_uint_32 on 64-bit systems. michael@0: Added "(unsigned long)" typecast on png_uint_32 variables in printf lists. michael@0: michael@0: Version 1.4.0beta8 [June 22, 2006] michael@0: Added demonstration of user chunk support in pngtest.c, to support the michael@0: public sTER chunk and a private vpAg chunk. michael@0: michael@0: Version 1.4.0beta9 [July 3, 2006] michael@0: Removed ordinals from scripts/pngw32.def and removed png_info_int and michael@0: png_set_gray_1_2_4_to_8 entries. michael@0: Inline call of png_get_uint_32() in png_get_uint_31(). michael@0: Use png_get_uint_31() to get vpAg width and height in pngtest.c michael@0: Removed WINCE and Netware projects. michael@0: Removed standalone Y2KINFO file. michael@0: michael@0: Version 1.4.0beta10 [July 12, 2006] michael@0: Eliminated automatic copy of pngconf.h to pngconf.h.in from configure and michael@0: some makefiles, because it was not working reliably. Instead, distribute michael@0: pngconf.h.in along with pngconf.h and cause configure and some of the michael@0: makefiles to update pngconf.h from pngconf.h.in. michael@0: Added pngconf.h to DEPENDENCIES in Makefile.am michael@0: michael@0: Version 1.4.0beta11 [August 19, 2006] michael@0: Removed AC_FUNC_MALLOC from configure.ac. michael@0: Added a warning when writing iCCP profile with mismatched profile length. michael@0: Patched pnggccrd.c to assemble on x86_64 platforms. michael@0: Moved chunk header reading into a separate function png_read_chunk_header() michael@0: in pngrutil.c. The chunk header (len+sig) is now serialized in a single michael@0: operation (Cosmin). michael@0: Implemented support for I/O states. Added png_ptr member io_state, and michael@0: functions png_get_io_chunk_name() and png_get_io_state() in pngget.c michael@0: (Cosmin). michael@0: Added png_get_io_chunk_name and png_get_io_state to scripts/*.def (Cosmin). michael@0: Renamed scripts/pngw32.* to scripts/pngwin.* (Cosmin). michael@0: Removed the include directories and libraries from CFLAGS and LDFLAGS michael@0: in scripts/makefile.gcc (Cosmin). michael@0: Used png_save_uint_32() to set vpAg width and height in pngtest.c (Cosmin). michael@0: Cast to proper type when getting/setting vpAg units in pngtest.c (Cosmin). michael@0: Added pngintrn.h to the Visual C++ projects (Cosmin). michael@0: Removed scripts/list (Cosmin). michael@0: Updated copyright year in scripts/pngwin.def (Cosmin). michael@0: Removed PNG_TYPECAST_NULL and used standard NULL consistently (Cosmin). michael@0: Disallowed the user to redefine png_size_t, and enforced a consistent use michael@0: of png_size_t across libpng (Cosmin). michael@0: Changed the type of png_ptr->rowbytes, PNG_ROWBYTES() and friends michael@0: to png_size_t (Cosmin). michael@0: Removed png_convert_size() and replaced png_sizeof with sizeof (Cosmin). michael@0: Removed some unnecessary type casts (Cosmin). michael@0: Changed prototype of png_get_compression_buffer_size() and michael@0: png_set_compression_buffer_size() to work with png_size_t instead of michael@0: png_uint_32 (Cosmin). michael@0: Removed png_memcpy_check() and png_memset_check() (Cosmin). michael@0: Fixed a typo (png_byte --> png_bytep) in libpng.3 and libpng.txt (Cosmin). michael@0: Clarified that png_zalloc() does not clear the allocated memory, michael@0: and png_zalloc() and png_zfree() cannot be PNGAPI (Cosmin). michael@0: Renamed png_mem_size_t to png_alloc_size_t, fixed its definition in michael@0: pngconf.h, and used it in all memory allocation functions (Cosmin). michael@0: Renamed pngintrn.h to pngpriv.h, added a comment at the top of the file michael@0: mentioning that the symbols declared in that file are private, and michael@0: updated the scripts and the Visual C++ projects accordingly (Cosmin). michael@0: Removed circular references between pngconf.h and pngconf.h.in in michael@0: scripts/makefile.vc*win32 (Cosmin). michael@0: Removing trailing '.' from the warning and error messages (Cosmin). michael@0: Added pngdefs.h that is built by makefile or configure, instead of michael@0: pngconf.h.in (Glenn). michael@0: Detect and fix attempt to write wrong iCCP profile length. michael@0: michael@0: Version 1.4.0beta12 [October 19, 2006] michael@0: Changed "logical" to "bitwise" in the documentation. michael@0: Work around Intel-Mac compiler bug by setting PNG_NO_MMX_CODE in pngconf.h michael@0: Add a typecast to stifle compiler warning in pngrutil.c michael@0: michael@0: Version 1.4.0beta13 [November 10, 2006] michael@0: Fix potential buffer overflow in sPLT chunk handler. michael@0: Fix Makefile.am to not try to link to noexistent files. michael@0: michael@0: Version 1.4.0beta14 [November 15, 2006] michael@0: Check all exported functions for NULL png_ptr. michael@0: michael@0: Version 1.4.0beta15 [November 17, 2006] michael@0: Relocated two misplaced tests for NULL png_ptr. michael@0: Built Makefile.in with automake-1.9.6 instead of 1.9.2. michael@0: Build configure with autoconf-2.60 instead of 2.59 michael@0: Add "install: all" in Makefile.am so "configure; make install" will work. michael@0: michael@0: Version 1.4.0beta16 [November 17, 2006] michael@0: Added a typecast in png_zalloc(). michael@0: michael@0: Version 1.4.0beta17 [December 4, 2006] michael@0: Changed "new_key[79] = '\0';" to "(*new_key)[79] = '\0';" in pngwutil.c michael@0: Add "png_bytep" typecast to profile while calculating length in pngwutil.c michael@0: michael@0: Version 1.4.0beta18 [December 7, 2006] michael@0: Added scripts/CMakeLists.txt michael@0: michael@0: Version 1.4.0beta19 [May 16, 2007] michael@0: Revised scripts/CMakeLists.txt michael@0: Rebuilt configure and Makefile.in with newer tools. michael@0: Added conditional #undef jmpbuf in pngtest.c to undo #define in AIX headers. michael@0: Added scripts/makefile.nommx michael@0: michael@0: Version 1.4.0beta20 [July 9, 2008] michael@0: Moved several PNG_HAVE_* macros from pngpriv.h to png.h because applications michael@0: calling set_unknown_chunk_location() need them. michael@0: Moved several macro definitions from pngpriv.h to pngconf.h michael@0: Merge with changes to the 1.2.X branch, as of 1.2.30beta04. michael@0: Deleted all use of the MMX assembler code and Intel-licensed optimizations. michael@0: Revised makefile.mingw michael@0: michael@0: Version 1.4.0beta21 [July 21, 2008] michael@0: Moved local array "chunkdata" from pngrutil.c to the png_struct, so michael@0: it will be freed by png_read_destroy() in case of a read error (Kurt michael@0: Christensen). michael@0: michael@0: Version 1.4.0beta22 [July 21, 2008] michael@0: Change "purpose" and "buffer" to png_ptr->chunkdata to avoid memory leaking. michael@0: michael@0: Version 1.4.0beta23 [July 22, 2008] michael@0: Change "chunkdata = NULL" to "png_ptr->chunkdata = NULL" several places in michael@0: png_decompress_chunk(). michael@0: michael@0: Version 1.4.0beta24 [July 25, 2008] michael@0: Change all remaining "chunkdata" to "png_ptr->chunkdata" in michael@0: png_decompress_chunk(), and remove "chunkdata" from parameter list. michael@0: Put a call to png_check_chunk_name() in png_read_chunk_header(). michael@0: Revised png_check_chunk_name() to reject a name with a lowercase 3rd byte. michael@0: Removed two calls to png_check_chunk_name() occuring later in the process. michael@0: Define PNG_NO_ERROR_NUMBERS by default in pngconf.h michael@0: michael@0: Version 1.4.0beta25 [July 30, 2008] michael@0: Added a call to png_check_chunk_name() in pngpread.c michael@0: Reverted png_check_chunk_name() to accept a name with a lowercase 3rd byte. michael@0: Added png_push_have_buffer() function to pngpread.c michael@0: Eliminated PNG_BIG_ENDIAN_SUPPORTED and associated png_get_* macros. michael@0: Made inline expansion of png_get_*() optional with PNG_USE_READ_MACROS. michael@0: Eliminated all PNG_USELESS_TESTS and PNG_CORRECT_PALETTE_SUPPORTED code. michael@0: Synced contrib directory and configure files with libpng-1.2.30beta06. michael@0: Eliminated no-longer-used pngdefs.h (but it's still built in the makefiles) michael@0: Relocated a misplaced "#endif /* PNG_NO_WRITE_FILTER */" in pngwutil.c michael@0: michael@0: Version 1.4.0beta26 [August 4, 2008] michael@0: Removed png_push_have_buffer() function in pngpread.c. It increased the michael@0: compiled library size slightly. michael@0: Changed "-Wall" to "-W -Wall" in the CFLAGS in all makefiles (Cosmin Truta) michael@0: Declared png_ptr "volatile" in pngread.c and pngwrite.c to avoid warnings. michael@0: Updated contrib/visupng/cexcept.h to version 2.0.1 michael@0: Added PNG_LITERAL_CHARACTER macros for #, [, and ]. michael@0: michael@0: Version 1.4.0beta27 [August 5, 2008] michael@0: Revised usage of PNG_LITERAL_SHARP in pngerror.c. michael@0: Moved newline character from individual png_debug messages into the michael@0: png_debug macros. michael@0: Allow user to #define their own png_debug, png_debug1, and png_debug2. michael@0: michael@0: Version 1.4.0beta28 [August 5, 2008] michael@0: Revised usage of PNG_LITERAL_SHARP in pngerror.c. michael@0: Added PNG_STRING_NEWLINE macro michael@0: michael@0: Version 1.4.0beta29 [August 9, 2008] michael@0: Revised usage of PNG_STRING_NEWLINE to work on non-ISO compilers. michael@0: Added PNG_STRING_COPYRIGHT macro. michael@0: Added non-ISO versions of png_debug macros. michael@0: michael@0: Version 1.4.0beta30 [August 14, 2008] michael@0: Added premultiplied alpha feature (Volker Wiendl). michael@0: michael@0: Version 1.4.0beta31 [August 18, 2008] michael@0: Moved png_set_premultiply_alpha from pngtrans.c to pngrtran.c michael@0: Removed extra crc check at the end of png_handle_cHRM(). Bug introduced michael@0: in libpng-1.4.0beta20. michael@0: michael@0: Version 1.4.0beta32 [August 19, 2008] michael@0: Added PNG_WRITE_FLUSH_SUPPORTED block around new png_flush() call. michael@0: Revised PNG_NO_STDIO version of png_write_flush() michael@0: michael@0: Version 1.4.0beta33 [August 20, 2008] michael@0: Added png_get|set_chunk_cache_max() to limit the total number of sPLT, michael@0: text, and unknown chunks that can be stored. michael@0: michael@0: Version 1.4.0beta34 [September 6, 2008] michael@0: Shortened tIME_string to 29 bytes in pngtest.c michael@0: Fixed off-by-one error introduced in png_push_read_zTXt() function in michael@0: libpng-1.2.30beta04/pngpread.c (Harald van Dijk) michael@0: michael@0: Version 1.4.0beta35 [October 6, 2008] michael@0: Changed "trans_values" to "trans_color". michael@0: Changed so-number from 0 to 14. Some OS do not like 0. michael@0: Revised makefile.darwin to fix shared library numbering. michael@0: Change png_set_gray_1_2_4_to_8() to png_set_expand_gray_1_2_4_to_8() michael@0: in example.c (debian bug report) michael@0: michael@0: Version 1.4.0beta36 [October 25, 2008] michael@0: Sync with tEXt vulnerability fix in libpng-1.2.33rc02. michael@0: michael@0: Version 1.4.0beta37 [November 13, 2008] michael@0: Added png_check_cHRM in png.c and moved checking from pngget.c, pngrutil.c, michael@0: and pngwrite.c michael@0: michael@0: Version 1.4.0beta38 [November 22, 2008] michael@0: Added check for zero-area RGB cHRM triangle in png_check_cHRM() and michael@0: png_check_cHRM_fixed(). michael@0: michael@0: Version 1.4.0beta39 [November 23, 2008] michael@0: Revised png_warning() to write its message on standard output by default michael@0: when warning_fn is NULL. michael@0: michael@0: Version 1.4.0beta40 [November 24, 2008] michael@0: Eliminated png_check_cHRM(). Instead, always use png_check_cHRM_fixed(). michael@0: In png_check_cHRM_fixed(), ensure white_y is > 0, and removed redundant michael@0: check for all-zero coordinates that is detected by the triangle check. michael@0: michael@0: Version 1.4.0beta41 [November 26, 2008] michael@0: Fixed string vs pointer-to-string error in png_check_keyword(). michael@0: Rearranged test expressions in png_check_cHRM_fixed() to avoid internal michael@0: overflows. michael@0: Added PNG_NO_CHECK_cHRM conditional. michael@0: michael@0: Version 1.4.0beta42, 43 [December 1, 2008] michael@0: Merge png_debug with version 1.2.34beta04. michael@0: michael@0: Version 1.4.0beta44 [December 6, 2008] michael@0: Removed redundant check for key==NULL before calling png_check_keyword() michael@0: to ensure that new_key gets initialized and removed extra warning michael@0: (Merge with version 1.2.34beta05 -- Arvan Pritchard). michael@0: michael@0: Version 1.4.0beta45 [December 9, 2008] michael@0: In png_write_png(), respect the placement of the filler bytes in an earlier michael@0: call to png_set_filler() (Jim Barry). michael@0: michael@0: Version 1.4.0beta46 [December 10, 2008] michael@0: Undid previous change and added PNG_TRANSFORM_STRIP_FILLER_BEFORE and michael@0: PNG_TRANSFORM_STRIP_FILLER_AFTER conditionals and deprecated michael@0: PNG_TRANSFORM_STRIP_FILLER (Jim Barry). michael@0: michael@0: Version 1.4.0beta47 [December 15, 2008] michael@0: Support for dithering was disabled by default, because it has never michael@0: been well tested and doesn't work very well. The code has not michael@0: been removed, however, and can be enabled by building libpng with michael@0: PNG_READ_DITHER_SUPPORTED defined. michael@0: michael@0: Version 1.4.0beta48 [February 14, 2009] michael@0: Added new exported function png_calloc(). michael@0: Combined several instances of png_malloc(); png_memset() into png_calloc(). michael@0: Removed prototype for png_freeptr() that was added in libpng-1.4.0beta24 michael@0: but was never defined. michael@0: michael@0: Version 1.4.0beta49 [February 28, 2009] michael@0: Added png_fileno() macro to pngconf.h, used in pngwio.c michael@0: Corrected order of #ifdef's in png_debug definition in png.h michael@0: Fixed bug introduced in libpng-1.4.0beta48 with the memset arguments michael@0: for pcal_params. michael@0: Fixed order of #ifdef directives in the png_debug defines in png.h michael@0: (bug introduced in libpng-1.2.34/1.4.0beta29). michael@0: Revised comments in png_set_read_fn() and png_set_write_fn(). michael@0: michael@0: Version 1.4.0beta50 [March 18, 2009] michael@0: Use png_calloc() instead of png_malloc() to allocate big_row_buf when michael@0: reading an interlaced file, to avoid a possible UMR. michael@0: Undid revision of PNG_NO_STDIO version of png_write_flush(). Users michael@0: having trouble with fflush() can build with PNG_NO_WRITE_FLUSH defined michael@0: or supply their own flush_fn() replacement. michael@0: Revised libpng*.txt and png.h documentation about use of png_write_flush() michael@0: and png_set_write_fn(). michael@0: Removed fflush() from pngtest.c. michael@0: Added "#define PNG_NO_WRITE_FLUSH" to contrib/pngminim/encoder/pngusr.h michael@0: michael@0: Version 1.4.0beta51 [March 21, 2009] michael@0: Removed new png_fileno() macro from pngconf.h . michael@0: michael@0: Version 1.4.0beta52 [March 27, 2009] michael@0: Relocated png_do_chop() ahead of building gamma tables in pngrtran.c michael@0: This avoids building 16-bit gamma tables unnecessarily. michael@0: Removed fflush() from pngtest.c. michael@0: Added "#define PNG_NO_WRITE_FLUSH" to contrib/pngminim/encoder/pngusr.h michael@0: Added a section on differences between 1.0.x and 1.2.x to libpng.3/libpng.txt michael@0: michael@0: Version 1.4.0beta53 [April 1, 2009] michael@0: Removed some remaining MMX macros from pngpriv.h michael@0: Fixed potential memory leak of "new_name" in png_write_iCCP() (Ralph Giles) michael@0: michael@0: Version 1.4.0beta54 [April 13, 2009] michael@0: Added "ifndef PNG_SKIP_SETJMP_CHECK" block in pngconf.h to allow michael@0: application code writers to bypass the check for multiple inclusion michael@0: of setjmp.h when they know that it is safe to ignore the situation. michael@0: Eliminated internal use of setjmp() in pngread.c and pngwrite.c michael@0: Reordered ancillary chunks in pngtest.png to be the same as what michael@0: pngtest now produces, and made some cosmetic changes to pngtest output. michael@0: Eliminated deprecated png_read_init_3() and png_write_init_3() functions. michael@0: michael@0: Version 1.4.0beta55 [April 15, 2009] michael@0: Simplified error handling in pngread.c and pngwrite.c by putting michael@0: the new png_read_cleanup() and png_write_cleanup() functions inline. michael@0: michael@0: Version 1.4.0beta56 [April 25, 2009] michael@0: Renamed "user_chunk_data" to "my_user_chunk_data" in pngtest.c to suppress michael@0: "shadowed declaration" warning from gcc-4.3.3. michael@0: Renamed "gamma" to "png_gamma" in pngset.c to avoid "shadowed declaration" michael@0: warning about a global "gamma" variable in math.h on some platforms. michael@0: michael@0: Version 1.4.0beta57 [May 2, 2009] michael@0: Removed prototype for png_freeptr() that was added in libpng-1.4.0beta24 michael@0: but was never defined (again). michael@0: Rebuilt configure scripts with autoconf-2.63 instead of 2.62 michael@0: Removed pngprefs.h and MMX from makefiles michael@0: michael@0: Version 1.4.0beta58 [May 14, 2009] michael@0: Changed pngw32.def to pngwin.def in makefile.mingw (typo was introduced michael@0: in beta57). michael@0: Clarified usage of sig_bit versus sig_bit_p in example.c (Vincent Torri) michael@0: michael@0: Version 1.4.0beta59 [May 15, 2009] michael@0: Reformated sources in libpng style (3-space intentation, comment format) michael@0: Fixed typo in libpng docs (PNG_FILTER_AVE should be PNG_FILTER_AVG) michael@0: Added sections about the git repository and our coding style to the michael@0: documentation michael@0: Relocated misplaced #endif in pngwrite.c, sCAL chunk handler. michael@0: michael@0: Version 1.4.0beta60 [May 19, 2009] michael@0: Conditionally compile png_read_finish_row() which is not used by michael@0: progressive readers. michael@0: Added contrib/pngminim/preader to demonstrate building minimal progressive michael@0: decoder, based on contrib/gregbook with embedded libpng and zlib. michael@0: michael@0: Version 1.4.0beta61 [May 20, 2009] michael@0: In contrib/pngminim/*, renamed "makefile.std" to "makefile", since there michael@0: is only one makefile in those directories, and revised the README files michael@0: accordingly. michael@0: More reformatting of comments, mostly to capitalize sentences. michael@0: michael@0: Version 1.4.0beta62 [June 2, 2009] michael@0: Added "#define PNG_NO_WRITE_SWAP" to contrib/pngminim/encoder/pngusr.h michael@0: and "define PNG_NO_READ_SWAP" to decoder/pngusr.h and preader/pngusr.h michael@0: Reformatted several remaining "else statement" into two lines. michael@0: Added a section to the libpng documentation about using png_get_io_ptr() michael@0: in configure scripts to detect the presence of libpng. michael@0: michael@0: Version 1.4.0beta63 [June 15, 2009] michael@0: Revised libpng*.txt and libpng.3 to mention calling png_set_IHDR() michael@0: multiple times and to specify the sample order in the tRNS chunk, michael@0: because the ISO PNG specification has a typo in the tRNS table. michael@0: Changed several PNG_UNKNOWN_CHUNK_SUPPORTED to michael@0: PNG_HANDLE_AS_UNKNOWN_SUPPORTED, to make the png_set_keep mechanism michael@0: available for ignoring known chunks even when not saving unknown chunks. michael@0: Adopted preference for consistent use of "#ifdef" and "#ifndef" versus michael@0: "#if defined()" and "if !defined()" where possible. michael@0: michael@0: Version 1.4.0beta64 [June 24, 2009] michael@0: Eliminated PNG_LEGACY_SUPPORTED code. michael@0: Moved the various unknown chunk macro definitions outside of the michael@0: PNG_READ|WRITE_ANCILLARY_CHUNK_SUPPORTED blocks. michael@0: michael@0: Version 1.4.0beta65 [June 26, 2009] michael@0: Added a reference to the libpng license in each file. michael@0: michael@0: Version 1.4.0beta66 [June 27, 2009] michael@0: Refer to the libpng license instead of the libpng license in each file. michael@0: michael@0: Version 1.4.0beta67 [July 6, 2009] michael@0: Relocated INVERT_ALPHA within png_read_png() and png_write_png(). michael@0: Added high-level API transform PNG_TRANSFORM_GRAY_TO_RGB. michael@0: Added an "xcode" project to the projects directory (Alam Arias). michael@0: michael@0: Version 1.4.0beta68 [July 19, 2009] michael@0: Avoid some tests in filter selection in pngwutil.c michael@0: michael@0: Version 1.4.0beta69 [July 25, 2009] michael@0: Simplified the new filter-selection test. This runs faster in the michael@0: common "PNG_ALL_FILTERS" and PNG_FILTER_NONE cases. michael@0: Removed extraneous declaration from the new call to png_read_gray_to_rgb() michael@0: (bug introduced in libpng-1.4.0beta67). michael@0: Fixed up xcode project (Alam Arias) michael@0: Added a prototype for png_64bit_product() in png.c michael@0: michael@0: Version 1.4.0beta70 [July 27, 2009] michael@0: Avoid a possible NULL dereference in debug build, in png_set_text_2(). michael@0: (bug introduced in libpng-0.95, discovered by Evan Rouault) michael@0: michael@0: Version 1.4.0beta71 [July 29, 2009] michael@0: Rebuilt configure scripts with autoconf-2.64. michael@0: michael@0: Version 1.4.0beta72 [August 1, 2009] michael@0: Replaced *.tar.lzma with *.tar.xz in distribution. Get the xz codec michael@0: from . michael@0: michael@0: Version 1.4.0beta73 [August 1, 2009] michael@0: Reject attempt to write iCCP chunk with negative embedded profile length michael@0: (JD Chen) (CVE-2009-5063). michael@0: michael@0: Version 1.4.0beta74 [August 8, 2009] michael@0: Changed png_ptr and info_ptr member "trans" to "trans_alpha". michael@0: michael@0: Version 1.4.0beta75 [August 21, 2009] michael@0: Removed an extra png_debug() recently added to png_write_find_filter(). michael@0: Fixed incorrect #ifdef in pngset.c regarding unknown chunk support. michael@0: michael@0: Version 1.4.0beta76 [August 22, 2009] michael@0: Moved an incorrectly located test in png_read_row() in pngread.c michael@0: michael@0: Version 1.4.0beta77 [August 27, 2009] michael@0: Removed lpXYZ.tar.bz2 (with CRLF), KNOWNBUG, libpng-x.y.z-KNOWNBUG.txt, michael@0: and the "noconfig" files from the distribution. michael@0: Moved CMakeLists.txt from scripts into the main libpng directory. michael@0: Various bugfixes and improvements to CMakeLists.txt (Philip Lowman) michael@0: michael@0: Version 1.4.0beta78 [August 31, 2009] michael@0: Converted all PNG_NO_* tests to PNG_*_SUPPORTED everywhere except pngconf.h michael@0: Eliminated PNG_NO_FREE_ME and PNG_FREE_ME_SUPPORTED macros. michael@0: Use png_malloc plus a loop instead of png_calloc() to initialize michael@0: row_pointers in png_read_png(). michael@0: michael@0: Version 1.4.0beta79 [September 1, 2009] michael@0: Eliminated PNG_GLOBAL_ARRAYS and PNG_LOCAL_ARRAYS; always use local arrays. michael@0: Eliminated PNG_CALLOC_SUPPORTED macro and always provide png_calloc(). michael@0: michael@0: Version 1.4.0beta80 [September 17, 2009] michael@0: Removed scripts/libpng.icc michael@0: Changed typecast of filler from png_byte to png_uint_16 in png_set_filler(). michael@0: (Dennis Gustafsson) michael@0: Fixed typo introduced in beta78 in pngtest.c ("#if def " should be "#ifdef ") michael@0: michael@0: Version 1.4.0beta81 [September 23, 2009] michael@0: Eliminated unused PNG_FLAG_FREE_* defines from pngpriv.h michael@0: Expanded TAB characters in pngrtran.c michael@0: Removed PNG_CONST from all "PNG_CONST PNG_CHNK" declarations to avoid michael@0: compiler complaints about doubly declaring things "const". michael@0: Changed all "#if [!]defined(X)" to "if[n]def X" where possible. michael@0: Eliminated unused png_ptr->row_buf_size michael@0: michael@0: Version 1.4.0beta82 [September 25, 2009] michael@0: Moved redundant IHDR checking into new png_check_IHDR() in png.c michael@0: and report all errors found in the IHDR data. michael@0: Eliminated useless call to png_check_cHRM() from pngset.c michael@0: michael@0: Version 1.4.0beta83 [September 25, 2009] michael@0: Revised png_check_IHDR() to eliminate bogus complaint about filter_type. michael@0: michael@0: Version 1.4.0beta84 [September 30, 2009] michael@0: Fixed some inconsistent indentation in pngconf.h michael@0: Revised png_check_IHDR() to add a test for width variable less than 32-bit. michael@0: michael@0: Version 1.4.0beta85 [October 1, 2009] michael@0: Revised png_check_IHDR() again, to check info_ptr members instead of michael@0: the contents of the returned parameters. michael@0: michael@0: Version 1.4.0beta86 [October 9, 2009] michael@0: Updated the "xcode" project (Alam Arias). michael@0: Eliminated a shadowed declaration of "pp" in png_handle_sPLT(). michael@0: michael@0: Version 1.4.0rc01 [October 19, 2009] michael@0: Trivial cosmetic changes. michael@0: michael@0: Version 1.4.0beta87 [October 30, 2009] michael@0: Moved version 1.4.0 back into beta. michael@0: michael@0: Version 1.4.0beta88 [October 30, 2009] michael@0: Revised libpng*.txt section about differences between 1.2.x and 1.4.0 michael@0: because most of the new features have now been ported back to 1.2.41 michael@0: michael@0: Version 1.4.0beta89 [November 1, 2009] michael@0: More bugfixes and improvements to CMakeLists.txt (Philip Lowman) michael@0: Removed a harmless extra png_set_invert_alpha() from pngwrite.c michael@0: Apply png_user_chunk_cache_max within png_decompress_chunk(). michael@0: Merged libpng-1.2.41.txt with libpng-1.4.0.txt where appropriate. michael@0: michael@0: Version 1.4.0beta90 [November 2, 2009] michael@0: Removed all remaining WIN32_WCE #ifdefs except those involving the michael@0: time.h "tm" structure michael@0: michael@0: Version 1.4.0beta91 [November 3, 2009] michael@0: Updated scripts/pngw32.def and projects/wince/png32ce.def michael@0: Copied projects/wince/png32ce.def to the scripts directory. michael@0: Added scripts/makefile.wce michael@0: Patched ltmain.sh for wince support. michael@0: Added PNG_CONVERT_tIME_SUPPORTED macro. michael@0: michael@0: Version 1.4.0beta92 [November 4, 2009] michael@0: Make inclusion of time.h in pngconf.h depend on PNG_CONVERT_tIME_SUPPORTED michael@0: Make #define PNG_CONVERT_tIME_SUPPORTED depend on PNG_WRITE_tIME_SUPPORTED michael@0: Revised libpng*.txt to describe differences from 1.2.40 to 1.4.0 (instead michael@0: of differences from 1.2.41 to 1.4.0) michael@0: michael@0: Version 1.4.0beta93 [November 7, 2009] michael@0: Added PNG_DEPSTRUCT, PNG_DEPRECATED, PNG_USE_RESULT, PNG_NORETURN, and michael@0: PNG_ALLOCATED macros to detect deprecated direct access to the michael@0: png_struct or info_struct members and other deprecated usage in michael@0: applications (John Bowler). michael@0: Updated scripts/makefile* to add "-DPNG_CONFIGURE_LIBPNG" to CFLAGS, michael@0: to prevent warnings about direct access to png structs by libpng michael@0: functions while building libpng. They need to be tested, especially michael@0: those using compilers other than gcc. michael@0: Updated projects/visualc6 and visualc71 with "/d PNG_CONFIGURE_LIBPNG". michael@0: They should work but still need to be updated to remove michael@0: references to pnggccrd.c or pngvcrd.c and ASM building. michael@0: Added README.txt to the beos, cbuilder5, netware, and xcode projects warning michael@0: that they need to be updated, to remove references to pnggccrd.c and michael@0: pngvcrd.c and to depend on pngpriv.h michael@0: Removed three direct references to read_info_ptr members in pngtest.c michael@0: that were detected by the new PNG_DEPSTRUCT macro. michael@0: Moved the png_debug macro definitions and the png_read_destroy(), michael@0: png_write_destroy() and png_far_to_near() prototypes from png.h michael@0: to pngpriv.h (John Bowler) michael@0: Moved the synopsis lines for png_read_destroy(), png_write_destroy() michael@0: png_debug(), png_debug1(), and png_debug2() from libpng.3 to libpngpf.3. michael@0: michael@0: Version 1.4.0beta94 [November 9, 2009] michael@0: Removed the obsolete, unused pnggccrd.c and pngvcrd.c files. michael@0: Updated CMakeLists.txt to add "-DPNG_CONFIGURE_LIBPNG" to the definitions. michael@0: Removed dependency of pngtest.o on pngpriv.h in the makefiles. michael@0: Only #define PNG_DEPSTRUCT, etc. in pngconf.h if not already defined. michael@0: michael@0: Version 1.4.0beta95 [November 10, 2009] michael@0: Changed png_check_sig() to !png_sig_cmp() in contrib programs. michael@0: Added -DPNG_CONFIGURE_LIBPNG to contrib/pngminm/*/makefile michael@0: Changed png_check_sig() to !png_sig_cmp() in contrib programs. michael@0: Corrected the png_get_IHDR() call in contrib/gregbook/readpng2.c michael@0: Changed pngminim/*/gather.sh to stop trying to remove pnggccrd.c and pngvcrd.c michael@0: Added dependency on pngpriv.h in contrib/pngminim/*/makefile michael@0: michael@0: Version 1.4.0beta96 [November 12, 2009] michael@0: Renamed scripts/makefile.wce to scripts/makefile.cegcc michael@0: Revised Makefile.am to use libpng.sys while building libpng.so michael@0: so that only PNG_EXPORT functions are exported. michael@0: Removed the deprecated png_check_sig() function/macro. michael@0: Removed recently removed function names from scripts/*.def michael@0: Revised pngtest.png to put chunks in the same order written by pngtest michael@0: (evidently the same change made in libpng-1.0beta54 was lost). michael@0: Added PNG_PRIVATE macro definition in pngconf.h for possible future use. michael@0: michael@0: Version 1.4.0beta97 [November 13, 2009] michael@0: Restored pngtest.png to the libpng-1.4.0beta7 version. michael@0: Removed projects/beos and netware.txt; no one seems to be supporting them. michael@0: Revised Makefile.in michael@0: michael@0: Version 1.4.0beta98 [November 13, 2009] michael@0: Added the "xcode" project to zip distributions, michael@0: Fixed a typo in scripts/pngwin.def introduced in beta97. michael@0: michael@0: Version 1.4.0beta99 [November 14, 2009] michael@0: Moved libpng-config.in and libpng.pc-configure.in out of the scripts michael@0: directory, to libpng-config.in and libpng-pc.in, respectively, and michael@0: modified Makefile.am and configure.ac accordingly. Now "configure" michael@0: needs nothing from the "scripts" directory. michael@0: Avoid redefining PNG_CONST in pngconf.h michael@0: michael@0: Version 1.4.0beta100 [November 14, 2009] michael@0: Removed ASM builds from projects/visualc6 and projects/visualc71 michael@0: Removed scripts/makefile.nommx and makefile.vcawin32 michael@0: Revised CMakeLists.txt to account for new location of libpng-config.in michael@0: and libpng-pc.in michael@0: Updated INSTALL to reflect removal and relocation of files. michael@0: michael@0: Version 1.4.0beta101 [November 14, 2009] michael@0: Restored the binary files (*.jpg, *.png, some project files) that were michael@0: accidentally deleted from the zip and 7z distributions when the xcode michael@0: project was added. michael@0: michael@0: Version 1.4.0beta102 [November 18, 2009] michael@0: Added libpng-config.in and libpng-pc.in to the zip and 7z distributions. michael@0: Fixed a typo in projects/visualc6/pngtest.dsp, introduced in beta100. michael@0: Moved descriptions of makefiles and other scripts out of INSTALL into michael@0: scripts/README.txt michael@0: Updated the copyright year in scripts/pngwin.rc from 2006 to 2009. michael@0: michael@0: Version 1.4.0beta103 [November 21, 2009] michael@0: Removed obsolete comments about ASM from projects/visualc71/README_zlib.txt michael@0: Align row_buf on 16-byte boundary in memory. michael@0: Restored the PNG_WRITE_FLUSH_AFTER_IEND_SUPPORTED guard around the call michael@0: to png_flush() after png_write_IEND(). See 1.4.0beta32, 1.4.0beta50 michael@0: changes above and 1.2.30, 1.2.30rc01 and rc03 in 1.2.41 CHANGES. Someone michael@0: needs this feature. michael@0: Make the 'png_jmpbuf' macro expand to a call that records the correct michael@0: longjmp function as well as returning a pointer to the setjmp michael@0: jmp_buf buffer, and marked direct access to jmpbuf 'deprecated'. michael@0: (John Bowler) michael@0: michael@0: Version 1.4.0beta104 [November 22, 2009] michael@0: Removed png_longjmp_ptr from scripts/*.def and libpng.3 michael@0: Rebuilt configure scripts with autoconf-2.65 michael@0: michael@0: Version 1.4.0beta105 [November 25, 2009] michael@0: Use fast integer PNG_DIVIDE_BY_255() or PNG_DIVIDE_BY_65535() michael@0: to accomplish alpha premultiplication when michael@0: PNG_READ_COMPOSITE_NODIV_SUPPORTED is defined. michael@0: Changed "/255" to "/255.0" in background calculations to make it clear michael@0: that the 255 is used as a double. michael@0: michael@0: Version 1.4.0beta106 [November 27, 2009] michael@0: Removed premultiplied alpha feature. michael@0: michael@0: Version 1.4.0beta107 [December 4, 2009] michael@0: Updated README michael@0: Added "#define PNG_NO_PEDANTIC_WARNINGS" in the libpng source files. michael@0: Removed "-DPNG_CONFIGURE_LIBPNG" from the makefiles and projects. michael@0: Revised scripts/makefile.netbsd, makefile.openbsd, and makefile.sco michael@0: to put png.h and pngconf.h in $prefix/include, like the other scripts, michael@0: instead of in $prefix/include/libpng. Also revised makefile.sco michael@0: to put them in $prefix/include/libpng15 instead of in michael@0: $prefix/include/libpng/libpng15. michael@0: michael@0: Version 1.4.0beta108 [December 11, 2009] michael@0: Removed leftover "-DPNG_CONFIGURE_LIBPNG" from contrib/pngminim/*/makefile michael@0: Relocated png_do_chop() to its original position in pngrtran.c; the michael@0: change in version 1.2.41beta08 caused transparency to be handled wrong michael@0: in some 16-bit datastreams (Yusaku Sugai). michael@0: michael@0: Version 1.4.0beta109 [December 13, 2009] michael@0: Added "bit_depth" parameter to the private png_build_gamma_table() function. michael@0: Pass bit_depth=8 to png_build_gamma_table() when bit_depth is 16 but the michael@0: PNG_16_TO_8 transform has been set, to avoid unnecessary build of 16-bit michael@0: tables. michael@0: michael@0: Version 1.4.0rc02 [December 20, 2009] michael@0: Declared png_cleanup_needed "volatile" in pngread.c and pngwrite.c michael@0: michael@0: Version 1.4.0rc03 [December 22, 2009] michael@0: Renamed libpng-pc.in back to libpng.pc.in and revised CMakeLists.txt michael@0: (revising the change in 1.4.0beta99) michael@0: michael@0: Version 1.4.0rc04 [December 25, 2009] michael@0: Swapped PNG_UNKNOWN_CHUNKS_SUPPORTED and PNG_HANDLE_AS_UNKNOWN_SUPPORTED michael@0: in pngset.c to be consistent with other changes in version 1.2.38. michael@0: michael@0: Version 1.4.0rc05 [December 25, 2009] michael@0: Changed "libpng-pc.in" to "libpng.pc.in" in configure.ac, configure, and michael@0: Makefile.in to be consistent with changes in libpng-1.4.0rc03 michael@0: michael@0: Version 1.4.0rc06 [December 29, 2009] michael@0: Reverted the gamma_table changes from libpng-1.4.0beta109. michael@0: Fixed some indentation errors. michael@0: michael@0: Version 1.4.0rc07 [January 1, 2010] michael@0: Revised libpng*.txt and libpng.3 about 1.2.x->1.4.x differences. michael@0: Use png_calloc() instead of png_malloc(); png_memset() in pngrutil.c michael@0: Update copyright year to 2010. michael@0: michael@0: Version 1.4.0rc08 [January 2, 2010] michael@0: Avoid deprecated references to png_ptr-io_ptr and png_ptr->error_ptr michael@0: in pngtest.c michael@0: michael@0: Version 1.4.0 [January 3, 2010] michael@0: No changes. michael@0: michael@0: Version 1.4.1beta01 [January 8, 2010] michael@0: Updated CMakeLists.txt for consistent indentation and to avoid an michael@0: unclosed if-statement warning (Philip Lowman). michael@0: Revised Makefile.am and Makefile.in to remove references to Y2KINFO, michael@0: KNOWNBUG, and libpng.la (Robert Schwebel). michael@0: Revised the makefiles to install the same files and symbolic michael@0: links as configure, except for libpng.la and libpng14.la. michael@0: Make png_set|get_compression_buffer_size() available even when michael@0: PNG_WRITE_SUPPORTED is not enabled. michael@0: Revised Makefile.am and Makefile.in to simplify their maintenance. michael@0: Revised scripts/makefile.linux to install a link to libpng14.so.14.1 michael@0: michael@0: Version 1.4.1beta02 [January 9, 2010] michael@0: Revised the rest of the makefiles to install a link to libpng14.so.14.1 michael@0: michael@0: Version 1.4.1beta03 [January 10, 2010] michael@0: Removed png_set_premultiply_alpha() from scripts/*.def michael@0: michael@0: Version 1.4.1rc01 [January 16, 2010] michael@0: No changes. michael@0: michael@0: Version 1.4.1beta04 [January 23, 2010] michael@0: Revised png_decompress_chunk() to improve speed and memory usage when michael@0: decoding large chunks. michael@0: Added png_set|get_chunk_malloc_max() functions. michael@0: michael@0: Version 1.4.1beta05 [January 26, 2010] michael@0: Relocated "int k" declaration in pngtest.c to minimize its scope. michael@0: michael@0: Version 1.4.1beta06 [January 28, 2010] michael@0: Revised png_decompress_chunk() to use a two-pass method suggested by michael@0: John Bowler. michael@0: michael@0: Version 1.4.1beta07 [February 6, 2010] michael@0: Folded some long lines in the source files. michael@0: Added defineable PNG_USER_CHUNK_CACHE_MAX, PNG_USER_CHUNK_MALLOC_MAX, michael@0: and a PNG_USER_LIMITS_SUPPORTED flag. michael@0: Eliminated use of png_ptr->irowbytes and reused the slot in png_ptr as michael@0: png_ptr->png_user_chunk_malloc_max. michael@0: Revised png_push_save_buffer() to do fewer but larger png_malloc() calls. michael@0: michael@0: Version 1.4.1beta08 [February 6, 2010] michael@0: Minor cleanup and updating of dates and copyright year. michael@0: michael@0: Version 1.5.0beta01 [February 7, 2010] michael@0: Moved declaration of png_struct into private pngstruct.h and png_info michael@0: into pnginfo.h michael@0: michael@0: Version 1.4.1beta09 and 1.5.0beta02 [February 7, 2010] michael@0: Reverted to original png_push_save_buffer() code. michael@0: michael@0: Version 1.4.1beta10 and 1.5.0beta03 [February 8, 2010] michael@0: Return allocated "old_buffer" in png_push_save_buffer() before michael@0: calling png_error(), to avoid a potential memory leak. michael@0: Updated configure script to use SO number 15. michael@0: michael@0: Version 1.5.0beta04 [February 9, 2010] michael@0: Removed malformed "incomplete struct declaration" of png_info from png.h michael@0: michael@0: Version 1.5.0beta05 [February 12, 2010] michael@0: Removed PNG_DEPSTRUCT markup in pngstruct.h and pnginfo.h, and undid the michael@0: linewrapping that it entailed. michael@0: Revised comments in pngstruct.h and pnginfo.h and added pointers to michael@0: the libpng license. michael@0: Changed PNG_INTERNAL to PNG_EXPOSE_INTERNAL_STRUCTURES michael@0: Removed the cbuilder5 project, which has not been updated to 1.4.0. michael@0: michael@0: Version 1.4.1beta12 and 1.5.0beta06 [February 14, 2010] michael@0: Fixed type declaration of png_get_chunk_malloc_max() in pngget.c (Daisuke michael@0: Nishikawa) michael@0: michael@0: Version 1.5.0beta07 [omitted] michael@0: michael@0: Version 1.5.0beta08 [February 19, 2010] michael@0: Changed #ifdef PNG_NO_STDIO_SUPPORTED to #ifdef PNG_NO_CONSOLE_IO_SUPPORTED michael@0: wherever png_snprintf() is used to construct error and warning messages. michael@0: Noted in scripts/makefile.mingw that it expects to be run under MSYS. michael@0: Removed obsolete unused MMX-querying support from contrib/gregbook michael@0: Added exported png_longjmp() function. michael@0: Removed the AIX redefinition of jmpbuf in png.h michael@0: Added -D_ALLSOURCE in configure.ac, makefile.aix, and CMakeLists.txt michael@0: when building on AIX. michael@0: michael@0: Version 1.5.0beta09 [February 19, 2010] michael@0: Removed -D_ALLSOURCE from configure.ac, makefile.aix, and CMakeLists.txt. michael@0: Changed the name of png_ptr->jmpbuf to png_ptr->png_jmpbuf in pngstruct.h michael@0: michael@0: Version 1.5.0beta10 [February 25, 2010] michael@0: Removed unused gzio.c from contrib/pngminim gather and makefile scripts michael@0: Removed replacement error handlers from contrib/gregbook. Because of michael@0: the new png_longjmp() function they are no longer needed. michael@0: michael@0: Version 1.5.0beta11 [March 6, 2010] michael@0: Removed checking for already-included setjmp.h from pngconf.h michael@0: Fixed inconsistent indentations and made numerous cosmetic changes. michael@0: Revised the "SEE ALSO" style of libpng.3, libpngpf.3, and png.5 michael@0: michael@0: Version 1.5.0beta12 [March 9, 2010] michael@0: Moved "#include png.h" inside pngpriv.h and removed "#include png.h" from michael@0: the source files, along with "#define PNG_EXPOSE_INTERNAL_STRUCTURES" michael@0: and "#define PNG_NO_PEDANTIC_WARNINGS" (John Bowler). michael@0: Created new pngdebug.h and moved debug definitions there. michael@0: michael@0: Version 1.5.0beta13 [March 10, 2010] michael@0: Protect pngstruct.h, pnginfo.h, and pngdebug.h from being included twice. michael@0: Revise the "#ifdef" blocks in png_inflate() so it will compile when neither michael@0: PNG_USER_CHUNK_MALLOC_MAX nor PNG_SET_CHUNK_MALLOC_LIMIT_SUPPORTED michael@0: is defined. michael@0: Removed unused png_measure_compressed_chunk() from pngpriv.h and libpngpf.3 michael@0: Moved the 'config.h' support from pngconf.h to pngpriv.h michael@0: Removed PNGAPI from the png_longjmp_ptr typedef. michael@0: Eliminated dependence of pngtest.c on the private pngdebug.h file. michael@0: Make all png_debug macros into *unterminated* statements or michael@0: expressions (i.e. a trailing ';' must always be added) and correct michael@0: the format statements in various png_debug messages. michael@0: michael@0: Version 1.5.0beta14 [March 14, 2010] michael@0: Removed direct access to png_ptr->io_ptr from the Windows code in pngtest.c michael@0: Revised Makefile.am to account for recent additions and replacements. michael@0: Corrected CE and OS/2 DEF files (scripts/png*def) for symbols removed and michael@0: added ordinal numbers to the Windows DEF file and corrected the duplicated michael@0: ordinal numbers on CE symbols that are commented out. michael@0: Added back in export symbols that can be present in the Windows build but michael@0: are disabled by default. michael@0: PNG_EXPORT changed to include an 'ordinal' field for DEF file generation. michael@0: PNG_CALLBACK added to make callback definitions uniform. PNGAPI split michael@0: into PNGCAPI (base C form), PNGAPI (exports) and PNGCBAPI (callbacks), michael@0: and appropriate changes made to all files. Cygwin builds re-hinged to michael@0: allow procedure call standard changes and to remove the need for the DEF michael@0: file (fixes build on Cygwin). michael@0: Enabled 'attribute' warnings that are relevant to library APIs and callbacks. michael@0: Changed rules for generation of the various symbol files and added a new michael@0: rule for a DEF file (which is also added to the distribution). michael@0: Updated the symbol file generation to stop it adding spurious spaces michael@0: to EOL (coming from preprocessor macro expansion). Added a facility michael@0: to join tokens in the output and rewrite *.dfn to use this. michael@0: Eliminated scripts/*.def in favor of libpng.def; updated projects/visualc71 michael@0: and removed scripts/makefile.cygwin. michael@0: Made PNG_BUILD_DLL safe: it can be set whenever a DLL is being built. michael@0: Removed the include of sys/types.h - apparently unnecessary now on the michael@0: platforms on which it happened (all but Mac OS and RISC OS). michael@0: Moved the Mac OS test into pngpriv.h (the only place it is used.) michael@0: michael@0: Version 1.5.0beta15 [March 17, 2010] michael@0: Added symbols.chk target to Makefile.am to validate the symbols in png.h michael@0: against the new DEF file scripts/symbols.def. michael@0: Changed the default DEF file back to pngwin.def. michael@0: Removed makefile.mingw. michael@0: Eliminated PNG_NO_EXTERN and PNG_ALL_EXTERN michael@0: michael@0: Version 1.5.0beta16 [April 1, 2010] michael@0: Make png_text_struct independent of PNG_iTXt_SUPPORTED, so that michael@0: fields are initialized in all configurations. The READ/WRITE michael@0: macros (PNG_(READ|WRITE)_iTXt_SUPPORTED) still function as michael@0: before to disable code to actually read or write iTXt chunks michael@0: and iTXt_SUPPORTED can be used to detect presence of either michael@0: read or write support (but it is probably better to check for michael@0: the one actually required - read or write.) michael@0: Combined multiple png_warning() calls for a single error. michael@0: Restored the macro definition of png_check_sig(). michael@0: michael@0: Version 1.5.0beta17 [April 17, 2010] michael@0: Added some "(long)" typecasts to printf calls in png_handle_cHRM(). michael@0: Documented the fact that png_set_dither() was disabled since libpng-1.4.0. michael@0: Reenabled png_set_dither() but renamed it to png_set_quantize() to reflect michael@0: more accurately what it actually does. At the same time, renamed michael@0: the PNG_DITHER_[RED,GREEN_BLUE]_BITS macros to michael@0: PNG_QUANTIZE_[RED,GREEN,BLUE]_BITS. michael@0: Added some "(long)" typecasts to printf calls in png_handle_cHRM(). michael@0: Freeze build-time only configuration in the build. michael@0: In all prior versions of libpng most configuration options michael@0: controlled by compiler #defines had to be repeated by the michael@0: application code that used libpng. This patch changes this michael@0: so that compilation options that can only be changed at build michael@0: time are frozen in the build. Options that are compiler michael@0: dependent (and those that are system dependent) are evaluated michael@0: each time - pngconf.h holds these. Options that can be changed michael@0: per-file in the application are in png.h. Frozen options are michael@0: in the new installed header file pnglibconf.h (John Bowler) michael@0: Removed the xcode project because it has not been updated to work michael@0: with libpng-1.5.0. michael@0: Removed the ability to include optional pngusr.h michael@0: michael@0: Version 1.5.0beta18 [April 17, 2010] michael@0: Restored the ability to include optional pngusr.h michael@0: Moved replacements for png_error() and png_warning() from the michael@0: contrib/pngminim project to pngerror.c, for use when warnings or michael@0: errors are disabled via PNG_NO_WARN or PNG_NO_ERROR_TEXT, to avoid michael@0: storing unneeded error/warning text. michael@0: Updated contrib/pngminim project to work with the new pnglibconf.h michael@0: Added some PNG_NO_* defines to contrib/pngminim/*/pngusr.h to save space. michael@0: michael@0: Version 1.5.0beta19 [April 24, 2010] michael@0: Added PNG_{READ,WRITE}_INT_FUNCTIONS_SUPPORTED. This allows the functions michael@0: to read and write ints to be disabled independently of PNG_USE_READ_MACROS, michael@0: which allows libpng to be built with the functions even though the default michael@0: is to use the macros - this allows applications to choose at app build michael@0: time whether or not to use macros (previously impossible because the michael@0: functions weren't in the default build.) michael@0: Changed Windows calling convention back to __cdecl for API functions. michael@0: For Windows/x86 platforms only: michael@0: __stdcall is no longer needed for Visual Basic, so libpng-1.5.0 uses michael@0: __cdecl throughout (both API functions and callbacks) on Windows/x86 michael@0: platforms. michael@0: Replaced visualc6 and visualc71 projects with new vstudio project michael@0: Relaxed the overly-restrictive permissions of some files. michael@0: michael@0: Version 1.5.0beta20 [April 24, 2010] michael@0: Relaxed more overly-restrictive permissions of some files. michael@0: michael@0: Version 1.5.0beta21 [April 27, 2010] michael@0: Removed some unwanted binary bytes and changed CRLF to NEWLINE in the new michael@0: vstudio project files, and some trivial editing of some files in the michael@0: scripts directory. michael@0: Set PNG_NO_READ_BGR, PNG_NO_IO_STATE, and PNG_NO_TIME_RFC1123 in michael@0: contrib/pngminim/decoder/pngusr.h to make a smaller decoder application. michael@0: michael@0: Version 1.5.0beta22 [April 28, 2010] michael@0: Fixed dependencies of GET_INT_32 - it does not require READ_INT_FUNCTIONS michael@0: because it has a macro equivalent. michael@0: Improved the options.awk script; added an "everything off" option. michael@0: Revised contrib/pngminim to use the "everything off" option in pngusr.dfa. michael@0: michael@0: Version 1.5.0beta23 [April 29, 2010] michael@0: Corrected PNG_REMOVED macro to take five arguments. michael@0: The macro was documented with two arguments (name,ordinal), however michael@0: the symbol checking .dfn files assumed five arguments. The five michael@0: argument form seems more useful so it is changed to that. michael@0: Corrected PNG_UNKNOWN_CHUNKS_SUPPORTED to PNG_HANDLE_AS_UNKNOWN_SUPPORTED michael@0: in gregbook/readpng2.c michael@0: Corrected protection of png_get_user_transform_ptr. The API declaration in michael@0: png.h is removed if both READ and WRITE USER_TRANSFORM are turned off michael@0: but was left defined in pngtrans.c michael@0: Added logunsupported=1 to cause pnglibconf.h to document disabled options. michael@0: This makes the installed pnglibconf.h more readable but causes no michael@0: other change. The intention is that users of libpng will find it michael@0: easier to understand if an API they need is missing. michael@0: Include png_reset_zstream() in png.c only when PNG_READ_SUPPORTED is defined. michael@0: Removed dummy_inflate.c from contrib/pngminim/encoder michael@0: Removed contrib/pngminim/*/gather.sh; gathering is now done in the makefile. michael@0: michael@0: Version 1.5.0beta24 [May 7, 2010] michael@0: Use bitwise "&" instead of arithmetic mod in pngrutil.c calculation of the michael@0: offset of the png_ptr->rowbuf pointer into png_ptr->big_row_buf. michael@0: Added more blank lines for readability. michael@0: michael@0: Version 1.5.0beta25 [June 18, 2010] michael@0: In pngpread.c: png_push_have_row() add check for new_row > height michael@0: Removed the now-redundant check for out-of-bounds new_row from example.c michael@0: michael@0: Version 1.5.0beta26 [June 18, 2010] michael@0: In pngpread.c: png_push_process_row() add check for too many rows. michael@0: michael@0: Version 1.5.0beta27 [June 18, 2010] michael@0: Removed the check added in beta25 as it is now redundant. michael@0: michael@0: Version 1.5.0beta28 [June 20, 2010] michael@0: Rewrote png_process_IDAT_data to consistently treat extra data as warnings michael@0: and handle end conditions more cleanly. michael@0: Removed the new (beta26) check in png_push_process_row(). michael@0: michael@0: Version 1.5.0beta29 [June 21, 2010] michael@0: Revised scripts/options.awk to work on Sunos (but still doesn't work) michael@0: Added comment to options.awk and contrib/pngminim/*/makefile to try nawk. michael@0: michael@0: Version 1.5.0beta30 [June 22, 2010] michael@0: Stop memory leak when reading a malformed sCAL chunk. michael@0: michael@0: Version 1.5.0beta31 [June 26, 2010] michael@0: Revised pngpread.c patch of beta28 to avoid an endless loop. michael@0: Removed some trailing blanks. michael@0: michael@0: Version 1.5.0beta32 [June 26, 2010] michael@0: Removed leftover scripts/options.patch and scripts/options.rej michael@0: michael@0: Version 1.5.0beta33 [July 6, 3010] michael@0: Made FIXED and FLOATING options consistent in the APIs they enable and michael@0: disable. Corrected scripts/options.awk to handle both command line michael@0: options and options specified in the .dfa files. michael@0: Changed char *msg to PNG_CONST char *msg in pngrutil.c michael@0: Make png_set_sRGB_gAMA_and_cHRM set values using either the fixed or michael@0: floating point APIs, but not both. michael@0: Reversed patch to remove error handler when the jmp_buf is stored in the michael@0: main program structure, not the png_struct. michael@0: The error handler is needed because the default handler in libpng will michael@0: always use the jmp_buf in the library control structure; this is never michael@0: set. The gregbook code is a useful example because, even though it michael@0: uses setjmp/longjmp, it shows how error handling can be implemented michael@0: using control mechanisms not directly supported by libpng. The michael@0: technique will work correctly with mechanisms such as Microsoft michael@0: Structure Exceptions or C++ exceptions (compiler willing - note that gcc michael@0: does not by default support interworking of C and C++ error handling.) michael@0: Reverted changes to call png_longjmp in contrib/gregbook where it is not michael@0: appropriate. If mainprog->jmpbuf is used by setjmp, then png_longjmp michael@0: cannot be used. michael@0: Changed "extern PNG_EXPORT" to "PNG_EXPORT" in png.h (Jan Nijtmans) michael@0: Changed "extern" to "PNG_EXTERN" in pngpriv.h (except for the 'extern "C" {') michael@0: michael@0: Version 1.5.0beta34 [July 12, 2010] michael@0: Put #ifndef PNG_EXTERN, #endif around the define PNG_EXTERN in pngpriv.h michael@0: michael@0: Version 1.5.0beta35 [July 24, 2010] michael@0: Removed some newly-added TAB characters. michael@0: Added -DNO_PNG_SNPRINTF to CFLAGS in scripts/makefile.dj2 michael@0: Moved the definition of png_snprintf() outside of the enclosing michael@0: #ifdef blocks in pngconf.h michael@0: michael@0: Version 1.5.0beta36 [July 29, 2010] michael@0: Patches by John Bowler: michael@0: Fixed point APIs are now supported throughout (no missing APIs). michael@0: Internal fixed point arithmetic support exists for all internal floating michael@0: point operations. michael@0: sCAL validates the floating point strings it is passed. michael@0: Safe, albeit rudimentary, Watcom support is provided by PNG_API_RULE==2 michael@0: Two new APIs exist to get the number of passes without turning on the michael@0: PNG_INTERLACE transform and to get the number of rows in the current michael@0: pass. michael@0: A new test program, pngvalid.c, validates the gamma code. michael@0: Errors in the 16-bit gamma correction (overflows) have been corrected. michael@0: cHRM chunk testing is done consistently (previously the floating point michael@0: API bypassed it, because the test really didn't work on FP, now the test michael@0: is performed on the actual values to be stored in the PNG file so it michael@0: works in the FP case too.) michael@0: Most floating point APIs now simply call the fixed point APIs after michael@0: converting the values to the fixed point form used in the PNG file. michael@0: The standard headers no longer include zlib.h, which is currently only michael@0: required for pngstruct.h and can therefore be internal. michael@0: Revised png_get_int_32 to undo the PNG two's complement representation of michael@0: negative numbers. michael@0: michael@0: Version 1.5.0beta37 [July 30, 2010] michael@0: Added a typecast in png_get_int_32() in png.h and pngrutil.h to avoid michael@0: a compiler warning. michael@0: Replaced oFFs 0,0 with oFFs -10,20 in pngtest.png michael@0: michael@0: Version 1.5.0beta38 [July 31, 2010] michael@0: Implemented remaining "_fixed" functions. michael@0: Corrected a number of recently introduced warnings mostly resulting from michael@0: safe but uncast assignments to shorter integers. Also added a zlib michael@0: VStudio release library project because the latest zlib Official Windows michael@0: build does not include such a thing. michael@0: Revised png_get_int_16() to be similar to png_get_int_32(). michael@0: Restored projects/visualc71. michael@0: michael@0: Version 1.5.0beta39 [August 2, 2010] michael@0: VisualC/GCC warning fixes, VisualC build fixes michael@0: The changes include support for function attributes in VC in addition to michael@0: those already present in GCC - necessary because without these some michael@0: warnings are unavoidable. Fixes include signed/unsigned fixes in michael@0: pngvalid and checks with gcc -Wall -Wextra -Wunused. michael@0: VC requires function attributes on function definitions as well as michael@0: declarations, PNG_FUNCTION has been added to enable this and the michael@0: relevant function definitions changed. michael@0: michael@0: Version 1.5.0beta40 [August 6, 2010] michael@0: Correct use of _WINDOWS_ in pngconf.h michael@0: Removed png_mem_ #defines; they are no longer used. michael@0: Added the sRGB chunk to pngtest.png michael@0: michael@0: Version 1.5.0beta41 [August 11, 2010] michael@0: Added the cHRM chunk to pngtest.png michael@0: Don't try to use version-script with cygwin/mingw. michael@0: Revised contrib/gregbook to work under cygwin/mingw. michael@0: michael@0: Version 1.5.0beta42 [August 18, 2010] michael@0: Add .dll.a to the list of extensions to be symlinked by Makefile.am (Yaakov) michael@0: Made all API functions that have const arguments and constant string michael@0: literal pointers declare them (John Bowler). michael@0: michael@0: Version 1.5.0beta43 [August 20, 2010] michael@0: Removed spurious tabs, shorten long lines (no source change) michael@0: Also added scripts/chkfmt to validate the format of all the files that can michael@0: reasonably be validated (it is suggested to run "make distclean" before michael@0: checking, because some machine generated files have long lines.) michael@0: Reformatted the CHANGES file to be more consistent throughout. michael@0: Made changes to address various issues identified by GCC, mostly michael@0: signed/unsigned and shortening problems on assignment but also a few michael@0: difficult to optimize (for GCC) loops. michael@0: Fixed non-GCC fixed point builds. In png.c a declaration was misplaced michael@0: in an earlier update. Fixed to declare the auto variables at the head. michael@0: Use cexcept.h in pngvalid.c. michael@0: michael@0: Version 1.5.0beta44 [August 24, 2010] michael@0: Updated CMakeLists.txt to use CMAKE_INSTALL_LIBDIR variable; useful for michael@0: installing libpng in /usr/lib64 (Funda Wang). michael@0: Revised CMakeLists.txt to put the man pages in share/man/man* not man/man* michael@0: Revised CMakeLists.txt to make symlinks instead of copies when installing. michael@0: Changed PNG_LIB_NAME from pngNN to libpngNN in CMakeLists.txt (Philip Lowman) michael@0: Implemented memory checks within pngvalid michael@0: Reformatted/rearranged pngvalid.c to assist use of progressive reader. michael@0: Check interlaced images in pngvalid michael@0: Clarified pngusr.h comments in pnglibconf.dfa michael@0: Simplified the pngvalid error-handling code now that cexcept.h is in place. michael@0: Implemented progressive reader in pngvalid.c for standard tests michael@0: Implemented progressive read in pngvalid.c gamma tests michael@0: Turn on progressive reader in pngvalid.c by default and tidy code. michael@0: michael@0: Version 1.5.0beta45 [August 26, 2010] michael@0: Added an explicit make step to projects/vstudio for pnglibconf.h michael@0: Also corrected zlib.vcxproj into which Visual Studio had introduced michael@0: what it calls an "authoring error". The change to make pnglibconf.h michael@0: simply copies the file; in the future it may actually generate the michael@0: file from scripts/pnglibconf.dfa as the other build systems do. michael@0: Changed pngvalid to work when floating point APIs are disabled michael@0: Renamed the prebuilt scripts/pnglibconf.h to scripts/pnglibconf.h.prebuilt michael@0: Supply default values for PNG_USER_PRIVATEBUILD and PNG_USER_DLLFNAME_POSTFIX michael@0: in pngpriv.h in case the user neglected to define them in their pngusr.h michael@0: michael@0: Version 1.5.0beta46 [August 28, 2010] michael@0: Added new private header files to libpng_sources in CMakeLists.txt michael@0: Added PNG_READ_16BIT, PNG_WRITE_16BIT, and PNG_16BIT options. michael@0: Added reference to scripts/pnglibconf.h.prebuilt in the visualc71 project. michael@0: michael@0: Version 1.5.0beta47 [September 11, 2010] michael@0: Fixed a number of problems with 64-bit compilation reported by Visual michael@0: Studio 2010 (John Bowler). michael@0: michael@0: Version 1.5.0beta48 [October 4, 2010] michael@0: Updated CMakeLists.txt (Philip Lowman). michael@0: Revised autogen.sh to recognize and use $AUTOCONF, $AUTOMAKE, $AUTOHEADER, michael@0: $AUTOPOINT, $ACLOCAL and $LIBTOOLIZE michael@0: Fixed problem with symbols creation in Makefile.am which was assuming that michael@0: all versions of ccp write to standard output by default (Martin Banky). The michael@0: bug was introduced in libpng-1.2.9beta5. michael@0: Removed unused mkinstalldirs. michael@0: michael@0: Version 1.5.0beta49 [October 8, 2010] michael@0: Undid Makefile.am revision of 1.5.0beta48. michael@0: michael@0: Version 1.5.0beta50 [October 14, 2010] michael@0: Revised Makefile.in to account for mkinstalldirs being removed. michael@0: Added some "(unsigned long)" typecasts in printf statements in pngvalid.c. michael@0: Suppressed a compiler warning in png_handle_sPLT(). michael@0: Check for out-of-range text compression mode in png_set_text(). michael@0: michael@0: Version 1.5.0beta51 [October 15, 2010] michael@0: Changed embedded dates to "(PENDING RELEASE) in beta releases (and future michael@0: rc releases) to minimize the difference between releases. michael@0: michael@0: Version 1.5.0beta52 [October 16, 2010] michael@0: Restored some of the embedded dates (in png.h, png.c, documentation, etc.) michael@0: michael@0: Version 1.5.0beta53 [October 18, 2010] michael@0: Updated INSTALL to mention using "make maintainer-clean" and to remove michael@0: obsolete statement about a custom ltmain.sh michael@0: Disabled "color-tests" by default in Makefile.am so it will work with michael@0: automake versions earlier than 1.11.1 michael@0: Use document name "libpng-manual.txt" instead of "libpng-.txt" michael@0: to simplify version differences. michael@0: Removed obsolete remarks about setjmp handling from INSTALL. michael@0: Revised and renamed the typedef in png.h and png.c that was designed michael@0: to catch library and header mismatch. michael@0: michael@0: Version 1.5.0beta54 [November 10, 2010] michael@0: Require 48 bytes, not 64 bytes, for big_row_buf in overflow checks. michael@0: Used a consistent structure for the pngget.c functions. michael@0: michael@0: Version 1.5.0beta55 [November 21, 2010] michael@0: Revised png_get_uint_32, png_get_int_32, png_get_uint_16 (Cosmin) michael@0: Moved reading of file signature into png_read_sig (Cosmin) michael@0: Fixed atomicity of chunk header serialization (Cosmin) michael@0: Added test for io_state in pngtest.c (Cosmin) michael@0: Added "#!/bin/sh" at the top of contrib/pngminim/*/gather.sh scripts. michael@0: Changes to remove gcc warnings (John Bowler) michael@0: Certain optional gcc warning flags resulted in warnings in libpng code. michael@0: With these changes only -Wconversion and -Wcast-qual cannot be turned on. michael@0: Changes are trivial rearrangements of code. -Wconversion is not possible michael@0: for pngrutil.c (because of the widespread use of += et al on variables michael@0: smaller than (int) or (unsigned int)) and -Wcast-qual is not possible michael@0: with pngwio.c and pngwutil.c because the 'write' callback and zlib michael@0: compression both fail to declare their input buffers with 'const'. michael@0: michael@0: Version 1.5.0beta56 [December 7, 2010] michael@0: Added the private PNG_UNUSED() macro definition in pngpriv.h. michael@0: Added some commentary about PNG_EXPORT in png.h and pngconf.h michael@0: Revised PNG_EXPORT() macro and added PNG_EXPORTA() macro, with the michael@0: objective of simplifying and improving the cosmetic appearance of png.h. michael@0: Fixed some incorrect "=" macro names in pnglibconf.dfa michael@0: Included documentation of changes in 1.5.0 from 1.4.x in libpng-manual.txt michael@0: michael@0: Version 1.5.0beta57 [December 9, 2010] michael@0: Documented the pngvalid gamma error summary with additional comments and michael@0: print statements. michael@0: Improved missing symbol handling in checksym.awk; symbols missing in both michael@0: the old and new files can now be optionally ignored, treated as errors michael@0: or warnings. michael@0: Removed references to pngvcrd.c and pnggccrd.c from the vstudio project. michael@0: Updated "libpng14" to "libpng15" in the visualc71 project. michael@0: Enabled the strip16 tests in pngvalid.` michael@0: Don't display test results (except PASS/FAIL) when running "make test". michael@0: Instead put them in pngtest-log.txt michael@0: Added "--with-zprefix=" to configure.ac michael@0: Updated the prebuilt configuration files to autoconf version 2.68 michael@0: michael@0: Version 1.5.0beta58 [December 19, 2010] michael@0: Fixed interlace image handling and add test cases (John Bowler) michael@0: Fixed the clean rule in Makefile.am to remove pngtest-log.txt michael@0: Made minor changes to work around warnings in gcc 3.4 michael@0: michael@0: Version 1.5.0rc01 [December 27, 2010] michael@0: No changes. michael@0: michael@0: Version 1.5.0rc02 [December 27, 2010] michael@0: Eliminated references to the scripts/*.def files in project/visualc71. michael@0: michael@0: Version 1.5.0rc03 [December 28, 2010] michael@0: Eliminated scripts/*.def and revised Makefile.am accordingly michael@0: michael@0: Version 1.5.0rc04 [December 29, 2010] michael@0: Fixed bug in background transformation handling in pngrtran.c (it was michael@0: looking for the flag in png_ptr->transformations instead of in michael@0: png_ptr->flags) (David Raymond). michael@0: michael@0: Version 1.5.0rc05 [December 31, 2010] michael@0: Fixed typo in a comment in CMakeLists.txt (libpng14 => libpng15) (Cosmin) michael@0: michael@0: Version 1.5.0rc06 [January 4, 2011] michael@0: Changed the new configure option "zprefix=string" to "zlib-prefix=string" michael@0: michael@0: Version 1.5.0rc07 [January 4, 2011] michael@0: Updated copyright year. michael@0: michael@0: Version 1.5.0 [January 6, 2011] michael@0: No changes. michael@0: michael@0: version 1.5.1beta01 [January 8, 2011] michael@0: Added description of png_set_crc_action() to the manual. michael@0: Added a note in the manual that the type of the iCCP profile was changed michael@0: from png_charpp to png_bytepp in png_get_iCCP(). This change happened michael@0: in version 1.5.0beta36 but is not noted in the CHANGES. Similarly, michael@0: it was changed from png_charpp to png_const_bytepp in png_set_iCCP(). michael@0: Ensure that png_rgb_to_gray ignores palette mapped images, if libpng michael@0: internally happens to call it with one, and fixed a failure to handle michael@0: palette mapped images correctly. This fixes CVE-2690. michael@0: michael@0: Version 1.5.1beta02 [January 14, 2011] michael@0: Fixed a bug in handling of interlaced images (bero at arklinux.org). michael@0: Updated CMakeLists.txt (Clifford Yapp) michael@0: michael@0: Version 1.5.1beta03 [January 14, 2011] michael@0: Fixed typecasting of some png_debug() statements (Cosmin) michael@0: michael@0: Version 1.5.1beta04 [January 16, 2011] michael@0: Updated documentation of png_set|get_tRNS() (Thomas Klausner). michael@0: Mentioned in the documentation that applications must #include "zlib.h" michael@0: if they need access to anything in zlib.h, and that a number of michael@0: macros such as png_memset() are no longer accessible by applications. michael@0: Corrected pngvalid gamma test "sample" function to access all of the color michael@0: samples of each pixel, instead of sampling the red channel three times. michael@0: Prefixed variable names index, div, exp, gamma with "png_" to avoid "shadow" michael@0: warnings, and (mistakenly) changed png_exp() to exp(). michael@0: michael@0: Version 1.5.1beta05 [January 16, 2011] michael@0: Changed variable names png_index, png_div, png_exp, and png_gamma to michael@0: char_index, divisor, exp_b10, and gamma_val, respectively, and michael@0: changed exp() back to png_exp(). michael@0: michael@0: Version 1.5.1beta06 [January 20, 2011] michael@0: Prevent png_push_crc_skip() from hanging while reading an unknown chunk michael@0: or an over-large compressed zTXt chunk with the progressive reader. michael@0: Eliminated more GCC "shadow" warnings. michael@0: Revised png_fixed() in png.c to avoid compiler warning about reaching the michael@0: end without returning anything. michael@0: michael@0: Version 1.5.1beta07 [January 22, 2011] michael@0: In the manual, describe the png_get_IHDR() arguments in the correct order. michael@0: Added const_png_structp and const_png_infop types, and used them in michael@0: prototypes for most png_get_*() functions. michael@0: michael@0: Version 1.5.1beta08 [January 23, 2011] michael@0: Added png_get_io_chunk_type() and deprecated png_get_io_chunk_name() michael@0: Added synopses for the IO_STATE functions and other missing synopses michael@0: to the manual. Removed the synopses from libpngpf.3 because they michael@0: were out of date and no longer useful. Better information can be michael@0: obtained by reading the prototypes and comments in pngpriv.h michael@0: Attempted to fix cpp on Solaris with S. Studio 12 cc, fix build michael@0: Added a make macro DFNCPP that is a CPP that will accept the tokens in michael@0: a .dfn file and adds configure stuff to test for such a CPP. ./configure michael@0: should fail if one is not available. michael@0: Corrected const_png_ in png.h to png_const_ to avoid polluting the namespace. michael@0: Added png_get_current_row_number and png_get_current_pass_number for the michael@0: benefit of the user transform callback. michael@0: Added png_process_data_pause and png_process_data_skip for the benefit of michael@0: progressive readers that need to stop data processing or want to optimize michael@0: skipping of unread data (e.g., if the reader marks a chunk to be skipped.) michael@0: michael@0: Version 1.5.1beta09 [January 24, 2011] michael@0: Enhanced pngvalid, corrected an error in gray_to_rgb, corrected doc error. michael@0: pngvalid contains tests of transforms, which tests are currently disabled michael@0: because they are incompletely tested. gray_to_rgb was failing to expand michael@0: the bit depth for smaller bit depth images; this seems to be a long michael@0: standing error and resulted, apparently, in invalid output michael@0: (CVE-2011-0408, CERT VU#643140). The documentation did not accurately michael@0: describe what libpng really does when converting RGB to gray. michael@0: michael@0: Version 1.5.1beta10 [January 27, 2010] michael@0: Fixed incorrect examples of callback prototypes in the manual, that were michael@0: introduced in libpng-1.0.0. michael@0: In addition the order of the png_get_uint macros with respect to the michael@0: relevant function definitions has been reversed. This helps the michael@0: preprocessing of the symbol files be more robust. Furthermore, the michael@0: symbol file preprocessing now uses -DPNG_NO_USE_READ_MACROS even when michael@0: the library may actually be built with PNG_USE_READ_MACROS; this stops michael@0: the read macros interfering with the symbol file format. michael@0: Made the manual, synopses, and function prototypes use the function michael@0: argument names file_gamma, int_file_gamma, and srgb_intent consistently. michael@0: michael@0: Version 1.5.1beta11 [January 28, 2011] michael@0: Changed PNG_UNUSED from "param=param;" to "{if(param){}}". michael@0: Corrected local variable type in new API png_process_data_skip() michael@0: The type was self-evidently incorrect but only causes problems on 64-bit michael@0: architectures. michael@0: Added transform tests to pngvalid and simplified the arguments. michael@0: michael@0: Version 1.5.1rc01 [January 29, 2011] michael@0: No changes. michael@0: michael@0: Version 1.5.1rc02 [January 31, 2011] michael@0: Added a request in the manual that applications do not use "png_" or michael@0: "PNG_" to begin any of their own symbols. michael@0: Changed PNG_UNUSED to "(void)param;" and updated the commentary in pngpriv.h michael@0: michael@0: Version 1.5.1 [February 3, 2011] michael@0: No changes. michael@0: michael@0: Version 1.5.2beta01 [February 13, 2011] michael@0: More -Wshadow fixes for older gcc compilers. Older gcc versions apparently michael@0: check formal parameters names in function declarations (as well as michael@0: definitions) to see if they match a name in the global namespace. michael@0: Revised PNG_EXPORTA macro to not use an empty parameter, to accommodate the michael@0: old VisualC++ preprocessor. michael@0: Turned on interlace handling in png_read_png(). michael@0: Fixed gcc pendantic warnings. michael@0: Handle longjmp in Cygwin. michael@0: Fixed png_get_current_row_number() in the interlaced case. michael@0: Cleaned up ALPHA flags and transformations. michael@0: Implemented expansion to 16 bits. michael@0: michael@0: Version 1.5.2beta02 [February 19, 2011] michael@0: Fixed mistake in the descriptions of user read_transform and write_transform michael@0: function prototypes in the manual. The row_info struct is png_row_infop. michael@0: Reverted png_get_current_row_number() to previous (1.5.2beta01) behavior. michael@0: Corrected png_get_current_row_number documentation michael@0: Fixed the read/write row callback documentation. michael@0: This documents the current behavior, where the callback is called after michael@0: every row with information pertaining to the next row. michael@0: michael@0: Version 1.5.2beta03 [March 3, 2011] michael@0: Fixed scripts/makefile.vcwin32 michael@0: Updated contrib/pngsuite/README to add the word "modify". michael@0: Define PNG_ALLOCATED to blank when _MSC_VER<1300. michael@0: michael@0: Version 1.5.2rc01 [March 19, 2011] michael@0: Define remaining attributes to blank when MSC_VER<1300. michael@0: ifdef out mask arrays in pngread.c when interlacing is not supported. michael@0: michael@0: Version 1.5.2rc02 [March 22, 2011] michael@0: Added a hint to try CPP=/bin/cpp if "cpp -E" fails in scripts/pnglibconf.mak michael@0: and in contrib/pngminim/*/makefile, eg., on SunOS 5.10, and removed "strip" michael@0: from the makefiles. michael@0: Fixed a bug (present since libpng-1.0.7) that makes png_handle_sPLT() fail michael@0: to compile when PNG_NO_POINTER_INDEXING is defined (Chubanov Kirill) michael@0: michael@0: Version 1.5.2rc03 [March 24, 2011] michael@0: Don't include standard header files in png.h while building the symbol table, michael@0: to avoid cpp failure on SunOS (introduced PNG_BUILDING_SYMBOL_TABLE macro). michael@0: michael@0: Version 1.5.2 [March 31, 2011] michael@0: No changes. michael@0: michael@0: Version 1.5.3beta01 [April 1, 2011] michael@0: Re-initialize the zlib compressor before compressing non-IDAT chunks. michael@0: Added API functions (png_set_text_compression_level() and four others) to michael@0: set parameters for zlib compression of non-IDAT chunks. michael@0: michael@0: Version 1.5.3beta02 [April 3, 2011] michael@0: Updated scripts/symbols.def with new API functions. michael@0: Only compile the new zlib re-initializing code when text or iCCP is michael@0: supported, using PNG_WRITE_COMPRESSED_TEXT_SUPPORTED macro. michael@0: Improved the optimization of the zlib CMF byte (see libpng-1.2.6beta03). michael@0: Optimize the zlib CMF byte in non-IDAT compressed chunks michael@0: michael@0: Version 1.5.3beta03 [April 16, 2011] michael@0: Fixed gcc -ansi -pedantic compile. A strict ANSI system does not have michael@0: snprintf, and the "__STRICT_ANSI__" detects that condition more reliably michael@0: than __STDC__ (John Bowler). michael@0: Removed the PNG_PTR_NORETURN attribute because it too dangerous. It tells michael@0: the compiler that a user supplied callback (the error handler) does not michael@0: return, yet there is no guarantee in practice that the application code michael@0: will correctly implement the error handler because the compiler only michael@0: issues a warning if there is a mistake (John Bowler). michael@0: Removed the no-longer-used PNG_DEPSTRUCT macro. michael@0: Updated the zlib version to 1.2.5 in the VStudio project. michael@0: Fixed 64-bit builds where png_uint_32 is smaller than png_size_t in michael@0: pngwutil.c (John Bowler). michael@0: Fixed bug with stripping the filler or alpha channel when writing, that michael@0: was introduced in libpng-1.5.2beta01 (bug report by Andrew Church). michael@0: michael@0: Version 1.5.3beta04 [April 27, 2011] michael@0: Updated pngtest.png with the new zlib CMF optimization. michael@0: Cleaned up conditional compilation code and of background/gamma handling michael@0: Internal changes only except a new option to avoid compiling the michael@0: png_build_grayscale_palette API (which is not used at all internally.) michael@0: The main change is to move the transform tests (READ_TRANSFORMS, michael@0: WRITE_TRANSFORMS) up one level to the caller of the APIs. This avoids michael@0: calls to spurious functions if all transforms are disabled and slightly michael@0: simplifies those functions. Pngvalid modified to handle this. michael@0: A minor change is to stop the strip_16 and expand_16 interfaces from michael@0: disabling each other; this allows the future alpha premultiplication michael@0: code to use 16-bit intermediate values while still producing 8-bit output. michael@0: png_do_background and png_do_gamma have been simplified to take a single michael@0: pointer to the png_struct rather than pointers to every item required michael@0: from the png_struct. This makes no practical difference to the internal michael@0: code. michael@0: A serious bug in the pngvalid internal routine 'standard_display_init' has michael@0: been fixed - this failed to initialize the red channel and accidentally michael@0: initialized the alpha channel twice. michael@0: Changed png_struct jmp_buf member name from png_jmpbuf to tmp_jmpbuf to michael@0: avoid a possible clash with the png_jmpbuf macro on some platforms. michael@0: michael@0: Version 1.5.3beta05 [May 6, 2011] michael@0: Added the "_POSIX_SOURCE" feature test macro to ensure libpng sees the michael@0: correct API. _POSIX_SOURCE is defined in pngpriv.h, pngtest.c and michael@0: pngvalid.c to ensure that POSIX conformant systems disable non-POSIX APIs. michael@0: Removed png_snprintf and added formatted warning messages. This change adds michael@0: internal APIs to allow png_warning messages to have parameters without michael@0: requiring the host OS to implement snprintf. As a side effect the michael@0: dependency of the tIME-supporting RFC1132 code on stdio is removed and michael@0: PNG_NO_WARNINGS does actually work now. michael@0: Pass "" instead of '\0' to png_default_error() in png_err(). This mistake michael@0: was introduced in libpng-1.2.20beta01. This fixes CVE-2011-2691. michael@0: Added PNG_WRITE_OPTIMIZE_CMF_SUPPORTED macro to make the zlib "CMF" byte michael@0: optimization configureable. michael@0: IDAT compression failed if preceded by a compressed text chunk (bug michael@0: introduced in libpng-1.5.3beta01-02). This was because the attempt to michael@0: reset the zlib stream in png_write_IDAT happened after the first IDAT michael@0: chunk had been deflated - much too late. In this change internal michael@0: functions were added to claim/release the z_stream and, hopefully, make michael@0: the code more robust. Also deflateEnd checking is added - previously michael@0: libpng would ignore an error at the end of the stream. michael@0: michael@0: Version 1.5.3beta06 [May 8, 2011] michael@0: Removed the -D_ALL_SOURCE from definitions for AIX in CMakeLists.txt michael@0: Implemented premultiplied alpha support: png_set_alpha_mode API michael@0: michael@0: Version 1.5.3beta07 [May 11, 2011] michael@0: Added expand_16 support to the high level interface. michael@0: Added named value and 'flag' gamma support to png_set_gamma. Made a minor michael@0: change from the previous (unreleased) ABI/API to hide the exact value used michael@0: for Macs - it's not a good idea to embed this in the ABI! michael@0: Moved macro definitions for PNG_HAVE_IHDR, PNG_HAVE_PLTE, and PNG_AFTER_IDAT michael@0: from pngpriv.h to png.h because they must be visible to applications michael@0: that call png_set_unknown_chunks(). michael@0: Check for up->location !PNG_AFTER_IDAT when writing unknown chunks michael@0: before IDAT. michael@0: michael@0: Version 1.5.3beta08 [May 16, 2011] michael@0: Improved "pngvalid --speed" to exclude more of pngvalid from the time. michael@0: Documented png_set_alpha_mode(), other changes in libpng.3/libpng-manual.txt michael@0: The cHRM chunk now sets the defaults for png_set_rgb_to_gray() (when negative michael@0: parameters are supplied by the caller), while in the absence of cHRM michael@0: sRGB/Rec 709 values are still used. This introduced a divide-by-zero michael@0: bug in png_handle_cHRM(). michael@0: The bKGD chunk no longer overwrites the background value set by michael@0: png_set_background(), allowing the latter to be used before the file michael@0: header is read. It never performed any useful function to override michael@0: the default anyway. michael@0: Added memory overwrite and palette image checks to pngvalid.c michael@0: Previously palette image code was poorly checked. Since the transformation michael@0: code has a special palette path in most cases this was a severe weakness. michael@0: Minor cleanup and some extra checking in pngrutil.c and pngrtran.c. When michael@0: expanding an indexed image, always expand to RGBA if transparency is michael@0: present. michael@0: michael@0: Version 1.5.3beta09 [May 17, 2011] michael@0: Reversed earlier 1.5.3 change of transformation order; move png_expand_16 michael@0: back where it was. The change doesn't work because it requires 16-bit michael@0: gamma tables when the code only generates 8-bit ones. This fails michael@0: silently; the libpng code just doesn't do any gamma correction. Moving michael@0: the tests back leaves the old, inaccurate, 8-bit gamma calculations, but michael@0: these are clearly better than none! michael@0: michael@0: Version 1.5.3beta10 [May 20, 2011] michael@0: michael@0: png_set_background() and png_expand_16() did not work together correctly. michael@0: This problem is present in 1.5.2; if png_set_background is called with michael@0: need_expand false and the matching 16 bit color libpng erroneously just michael@0: treats it as an 8-bit color because of where png_do_expand_16 is in the michael@0: transform list. This simple fix reduces the supplied colour to 8-bits, michael@0: so it gets smashed, but this is better than the current behavior. michael@0: Added tests for expand16, more fixes for palette image tests to pngvalid. michael@0: Corrects the code for palette image tests and disables attempts to michael@0: validate palette colors. michael@0: michael@0: Version 1.5.3rc01 [June 3, 2011] michael@0: No changes. michael@0: michael@0: Version 1.5.3rc02 [June 8, 2011] michael@0: Fixed uninitialized memory read in png_format_buffer() (Bug report by michael@0: Frank Busse, CVE-2011-2501, related to CVE-2004-0421). michael@0: michael@0: Version 1.5.3beta11 [June 11, 2011] michael@0: Fixed png_handle_sCAL which is broken in 1.5. This fixes CVE 2011-2692. michael@0: Added sCAL to pngtest.png michael@0: Revised documentation about png_set_user_limits() to say that it also affects michael@0: png writing. michael@0: Revised handling of png_set_user_limits() so that it can increase the michael@0: limit beyond the PNG_USER_WIDTH|HEIGHT_MAX; previously it could only michael@0: reduce it. michael@0: Make the 16-to-8 scaling accurate. Dividing by 256 with no rounding is michael@0: wrong (high by one) 25% of the time. Dividing by 257 with rounding is michael@0: wrong in 128 out of 65536 cases. Getting the right answer all the time michael@0: without division is easy. michael@0: Added "_SUPPORTED" to the PNG_WRITE_CUSTOMIZE_ZTXT_COMPRESSION macro. michael@0: Added projects/owatcom, an IDE project for OpenWatcom to replace michael@0: scripts/makefile.watcom. This project works with OpenWatcom 1.9. The michael@0: IDE autogenerates appropriate makefiles (libpng.mk) for batch processing. michael@0: The project is configurable, unlike the Visual Studio project, so long michael@0: as the developer has an awk. michael@0: Changed png_set_gAMA to limit the gamma value range so that the inverse michael@0: of the stored value cannot overflow the fixed point representation, michael@0: and changed other things OpenWatcom warns about. michael@0: Revised pngvalid.c to test PNG_ALPHA_MODE_SUPPORTED correctly. This allows michael@0: pngvalid to build when ALPHA_MODE is not supported, which is required if michael@0: it is to build on libpng 1.4. michael@0: Removed string/memory macros that are no longer used and are not michael@0: necessarily fully supportable, particularly png_strncpy and png_snprintf. michael@0: Added log option to pngvalid.c and attempted to improve gamma messages. michael@0: michael@0: Version 1.5.3 [omitted] michael@0: People found the presence of a beta release following an rc release michael@0: to be confusing; therefore we bump the version to libpng-1.5.4beta01 michael@0: and there will be no libpng-1.5.3 release. michael@0: michael@0: Version 1.5.4beta01 [June 14, 2011] michael@0: Made it possible to undefine PNG_READ_16_TO_8_ACCURATE_SCALE_SUPPORTED michael@0: to get the same (inaccurate) output as libpng-1.5.2 and earlier. michael@0: Moved definitions of PNG_HAVE_IHDR, PNG_AFTER_IDAT, and PNG_HAVE_PLTE michael@0: outside of an unknown-chunk block in png.h because they are also michael@0: needed for other uses. michael@0: michael@0: Version 1.5.4beta02 [June 14, 2011] michael@0: Fixed and clarified LEGACY 16-to-8 scaling code. michael@0: Added png_set_chop_16() API, to match inaccurate results from previous michael@0: libpng versions. michael@0: Removed the ACCURATE and LEGACY options (they are no longer useable) michael@0: Use the old scaling method for background if png_set_chop_16() was michael@0: called. michael@0: Made png_set_chop_16() API removeable by disabling PNG_CHOP_16_TO_8_SUPPORTED michael@0: michael@0: Version 1.5.4beta03 [June 15, 2011] michael@0: Fixed a problem in png_do_expand_palette() exposed by optimization in michael@0: 1.5.3beta06 michael@0: Also removed a spurious and confusing "trans" member ("trans") from png_info. michael@0: The palette expand optimization prevented expansion to an intermediate RGBA michael@0: form if tRNS was present but alpha was marked to be stripped; this exposed michael@0: a check for tRNS in png_do_expand_palette() which is inconsistent with the michael@0: code elsewhere in libpng. michael@0: Correction to the expand_16 code; removed extra instance of michael@0: png_set_scale_16_to_8 from pngpriv.h michael@0: michael@0: Version 1.5.4beta04 [June 16, 2011] michael@0: Added a missing "#ifdef PNG_READ_BACKGROUND_SUPPORTED/#endif" in pngrtran.c michael@0: Added PNG_TRANSFORM_CHOP_16 to the high-level read transforms. michael@0: Made PNG_READ_16_TO_8_ACCURATE_SCALE configurable again. If this is michael@0: not enabled, png_set_strip_16() and png_do_scale_16_to_8() aren't built. michael@0: Revised contrib/visupng, gregbook, and pngminim to demonstrate chop_16_to_8 michael@0: michael@0: Version 1.5.4beta05 [June 16, 2011] michael@0: Renamed png_set_strip_16() to png_set_scale_16() and renamed michael@0: png_set_chop_16() to png_set_strip(16) in an attempt to minimize the michael@0: behavior changes between libpng14 and libpng15. michael@0: michael@0: Version 1.5.4beta06 [June 18, 2011] michael@0: Fixed new bug that was causing both strip_16 and scale_16 to be applied. michael@0: michael@0: Version 1.5.4beta07 [June 19, 2011] michael@0: Fixed pngvalid, simplified macros, added checking for 0 in sCAL. michael@0: The ACCURATE scale macro is no longer defined in 1.5 - call the michael@0: png_scale_16_to_8 API. Made sure that PNG_READ_16_TO_8 is still defined michael@0: if the png_strip_16_to_8 API is present. png_check_fp_number now michael@0: maintains some state so that positive, negative and zero values are michael@0: identified. sCAL uses these to be strictly spec conformant. michael@0: michael@0: Version 1.5.4beta08 [June 23, 2011] michael@0: Fixed pngvalid if ACCURATE_SCALE is defined. michael@0: Updated scripts/pnglibconf.h.prebuilt. michael@0: michael@0: Version 1.5.4rc01 [June 30, 2011] michael@0: Define PNG_ALLOCATED to "restrict" only if MSC_VER >= 1400. michael@0: michael@0: Version 1.5.4 [July 7, 2011] michael@0: No changes. michael@0: michael@0: Version 1.5.5beta01 [July 13, 2011] michael@0: Fixed some typos and made other minor changes in the manual. michael@0: Updated contrib/pngminus/makefile.std (Samuli Souminen) michael@0: michael@0: Version 1.5.5beta02 [July 14, 2011] michael@0: Revised Makefile.am and Makefile.in to look in the right directory for michael@0: pnglibconf.h.prebuilt michael@0: michael@0: Version 1.5.5beta03 [July 27, 2011] michael@0: Enabled compilation with g++ compiler. This compiler does not recognize michael@0: the file extension, so it always compiles with C++ rules. Made minor michael@0: changes to pngrutil.c to cast results where C++ expects it but C does not. michael@0: Minor editing of libpng.3 and libpng-manual.txt. michael@0: michael@0: Version 1.5.5beta04 [July 29, 2011] michael@0: Revised CMakeLists.txt (Clifford Yapp) michael@0: Updated commentary about the png_rgb_to_gray() default coefficients michael@0: in the manual and in pngrtran.c michael@0: michael@0: Version 1.5.5beta05 [August 17, 2011] michael@0: Prevent unexpected API exports from non-libpng DLLs on Windows. The "_DLL" michael@0: is removed from the test of whether a DLL is being built (this erroneously michael@0: caused the libpng APIs to be marked as DLL exports in static builds under michael@0: Microsoft Visual Studio). Almost all of the libpng building configuration michael@0: is moved from pngconf.h to pngpriv.h, but PNG_DLL_EXPORT remains in michael@0: pngconf.h, though, so that it is colocated with the import definition (it michael@0: is no longer used anywhere in the installed headers). The VStudio project michael@0: definitions have been cleaned up: "_USRDLL" has been removed from the michael@0: static library builds (this was incorrect), and PNG_USE_DLL has been added michael@0: to pngvalid to test the functionality (pngtest does not supply it, michael@0: deliberately). The spurious "_EXPORTS" has been removed from the michael@0: libpng build (all these errors were a result of copy/paste between project michael@0: configurations.) michael@0: Added new types and internal functions for CIE RGB end point handling to michael@0: pngpriv.h (functions yet to be implemented). michael@0: michael@0: Version 1.5.5beta06 [August 26, 2011] michael@0: Ensure the CMAKE_LIBRARY_OUTPUT_DIRECTORY is set in CMakeLists.txt michael@0: (Clifford Yap) michael@0: Fixes to rgb_to_gray and cHRM XYZ APIs (John Bowler): michael@0: The rgb_to_gray code had errors when combined with gamma correction. michael@0: Some pixels were treated as true grey when they weren't and such pixels michael@0: and true grey ones were not gamma corrected (the original value of the michael@0: red component was used instead). APIs to get and set cHRM using color michael@0: space end points have been added and the rgb_to_gray code that defaults michael@0: based on cHRM, and the divide-by-zero bug in png_handle_cHRM (CERT michael@0: VU#477046, CVE-2011-3328, introduced in 1.5.4) have been corrected. michael@0: A considerable number of tests has been added to pngvalid for the michael@0: rgb_to_gray transform. michael@0: Arithmetic errors in rgb_to_gray whereby the calculated gray value was michael@0: truncated to the bit depth rather than rounded have been fixed except in michael@0: the 8-bit non-gamma-corrected case (where consistency seems more important michael@0: than correctness.) The code still has considerable inaccuracies in the michael@0: 8-bit case because 8-bit linear arithmetic is used. michael@0: michael@0: Version 1.5.5beta07 [September 7, 2011] michael@0: Added "$(ARCH)" option to makefile.darwin michael@0: Added SunOS support to configure.ac and Makefile.am michael@0: Changed png_chunk_benign_error() to png_warning() in png.c, in michael@0: png_XYZ_from_xy_checked(). michael@0: michael@0: Version 1.5.5beta08 [September 10, 2011] michael@0: Fixed 64-bit compilation errors (gcc). The errors fixed relate michael@0: to conditions where types that are 32 bits in the GCC 32-bit michael@0: world (uLong and png_size_t) become 64 bits in the 64-bit michael@0: world. This produces potential truncation errors which the michael@0: compiler correctly flags. michael@0: Relocated new HAVE_SOLARIS_LD definition in configure.ac michael@0: Constant changes for 64-bit compatibility (removal of L suffixes). The michael@0: 16-bit cases still use "L" as we don't have a 16-bit test system. michael@0: michael@0: Version 1.5.5rc01 [September 15, 2011] michael@0: Removed "L" suffixes in pngpriv.h michael@0: michael@0: Version 1.5.5 [September 22, 2011] michael@0: No changes. michael@0: michael@0: Version 1.5.6beta01 [September 22, 2011] michael@0: Fixed some 64-bit type conversion warnings in pngrtran.c michael@0: Moved row_info from png_struct to a local variable. michael@0: The various interlace mask arrays have been made into arrays of michael@0: bytes and made PNG_CONST and static (previously some arrays were michael@0: marked PNG_CONST and some weren't). michael@0: Additional checks have been added to the transform code to validate the michael@0: pixel depths after the transforms on both read and write. michael@0: Removed some redundant code from pngwrite.c, in png_destroy_write_struct(). michael@0: Changed chunk reading/writing code to use png_uint_32 instead of png_byte[4]. michael@0: This removes the need to allocate temporary strings for chunk names on michael@0: the stack in the read/write code. Unknown chunk handling still uses the michael@0: string form because this is exposed in the API. michael@0: michael@0: Version 1.5.6beta02 [September 26, 2011] michael@0: Added a note in the manual the png_read_update_info() must be called only michael@0: once with a particular info_ptr. michael@0: Fixed a typo in the definition of the new PNG_STRING_FROM_CHUNK(s,c) macro. michael@0: michael@0: Version 1.5.6beta03 [September 28, 2011] michael@0: Revised test-pngtest.sh to report FAIL when pngtest fails. michael@0: Added "--strict" option to pngtest, to report FAIL when the failure is michael@0: only because the resulting valid files are different. michael@0: Revised CMakeLists.txt to work with mingw and removed some material from michael@0: CMakeLists.txt that is no longer useful in libpng-1.5. michael@0: michael@0: Version 1.5.6beta04 [October 5, 2011] michael@0: Fixed typo in Makefile.in and Makefile.am ("-M Wl" should be "-M -Wl")." michael@0: michael@0: Version 1.5.6beta05 [October 12, 2011] michael@0: Speed up png_combine_row() for interlaced images. This reduces the generality michael@0: of the code, allowing it to be optimized for Adam7 interlace. The masks michael@0: passed to png_combine_row() are now generated internally, avoiding michael@0: some code duplication and localizing the interlace handling somewhat. michael@0: Align png_struct::row_buf - previously it was always unaligned, caused by michael@0: a bug in the code that attempted to align it; the code needs to subtract michael@0: one from the pointer to take account of the filter byte prepended to michael@0: each row. michael@0: Optimized png_combine_row() when rows are aligned. This gains a small michael@0: percentage for 16-bit and 32-bit pixels in the typical case where the michael@0: output row buffers are appropriately aligned. The optimization was not michael@0: previously possible because the png_struct buffer was always misaligned. michael@0: Fixed bug in png_write_chunk_header() debug print, introduced in 1.5.6beta01. michael@0: michael@0: Version 1.5.6beta06 [October 17, 2011] michael@0: Removed two redundant tests for unitialized row. michael@0: Fixed a relatively harmless memory overwrite in compressed text writing michael@0: with a 1 byte zlib buffer. michael@0: Add ability to call png_read_update_info multiple times to pngvalid.c. michael@0: Fixes for multiple calls to png_read_update_info. These fixes attend to michael@0: most of the errors revealed in pngvalid, however doing the gamma work michael@0: twice results in inaccuracies that can't be easily fixed. There is now michael@0: a warning in the code if this is going to happen. michael@0: Turned on multiple png_read_update_info in pngvalid transform tests. michael@0: Prevent libpng from overwriting unused bits at the end of the image when michael@0: it is not byte aligned, while reading. Prior to libpng-1.5.6 libpng would michael@0: overwrite the partial byte at the end of each row if the row width was not michael@0: an exact multiple of 8 bits and the image is not interlaced. michael@0: michael@0: Version 1.5.6beta07 [October 21, 2011] michael@0: Made png_ptr->prev_row an aligned pointer into png_ptr->big_prev_row michael@0: (Mans Rullgard). michael@0: michael@0: Version 1.5.6rc01 [October 26, 2011] michael@0: Changed misleading "Missing PLTE before cHRM" warning to "Out of place cHRM" michael@0: michael@0: Version 1.5.6rc02 [October 27, 2011] michael@0: Added LSR() macro to defend against buggy compilers that evaluate non-taken michael@0: code branches and complain about out-of-range shifts. michael@0: michael@0: Version 1.5.6rc03 [October 28, 2011] michael@0: Renamed the LSR() macro to PNG_LSR() and added PNG_LSL() macro. michael@0: Fixed compiler warnings with Intel and MSYS compilers. The logical shift michael@0: fix for Microsoft Visual C is required by other compilers, so this michael@0: enables that fix for all compilers when using compile-time constants. michael@0: Under MSYS 'byte' is a name declared in a system header file, so we michael@0: changed the name of a local variable to avoid the warnings that result. michael@0: Added #define PNG_ALIGN_TYPE PNG_ALIGN_NONE to contrib/pngminim/*/pngusr.h michael@0: michael@0: Version 1.5.6 [November 3, 2011] michael@0: No changes. michael@0: michael@0: Version 1.5.7beta01 [November 4, 2011] michael@0: Added support for ARM processor, when decoding all PNG up-filtered rows michael@0: and any other-filtered rows with 3 or 4 bytes per pixel (Mans Rullgard). michael@0: Fixed bug in pngvalid on early allocation failure; fixed type cast in michael@0: pngmem.c; pngvalid would attempt to call png_error() if the allocation michael@0: of a png_struct or png_info failed. This would probably have led to a michael@0: crash. The pngmem.c implementation of png_malloc() included a cast michael@0: to png_size_t which would fail on large allocations on 16-bit systems. michael@0: Fix for the preprocessor of the Intel C compiler. The preprocessor michael@0: splits adjacent @ signs with a space; this changes the concatentation michael@0: token from @-@-@ to PNG_JOIN; that should work with all compiler michael@0: preprocessors. michael@0: Paeth filter speed improvements from work by Siarhei Siamashka. This michael@0: changes the 'Paeth' reconstruction function to improve the GCC code michael@0: generation on x86. The changes are only part of the suggested ones; michael@0: just the changes that definitely improve speed and remain simple. michael@0: The changes also slightly increase the clarity of the code. michael@0: michael@0: Version 1.5.7beta02 [November 11, 2011] michael@0: Check compression_type parameter in png_get_iCCP and remove spurious michael@0: casts. The compression_type parameter is always assigned to, so must michael@0: be non-NULL. The cast of the profile length potentially truncated the michael@0: value unnecessarily on a 16-bit int system, so the cast of the (byte) michael@0: compression type to (int) is specified by ANSI-C anyway. michael@0: Fixed FP division by zero in pngvalid.c; the 'test_pixel' code left michael@0: the sBIT fields in the test pixel as 0, which resulted in a floating michael@0: point division by zero which was irrelevant but causes systems where michael@0: FP exceptions cause a crash. Added code to pngvalid to turn on FP michael@0: exceptions if the appropriate glibc support is there to ensure this is michael@0: tested in the future. michael@0: Updated scripts/pnglibconf.mak and scripts/makefile.std to handle the michael@0: new PNG_JOIN macro. michael@0: Added versioning to pnglibconf.h comments. michael@0: Simplified read/write API initial version; basic read/write tested on michael@0: a variety of images, limited documentation (in the header file.) michael@0: Installed more accurate linear to sRGB conversion tables. The slightly michael@0: modified tables reduce the number of 16-bit values that michael@0: convert to an off-by-one 8-bit value. The "makesRGB.c" code that was used michael@0: to generate the tables is now in a contrib/sRGBtables sub-directory. michael@0: michael@0: Version 1.5.7beta03 [November 17, 2011] michael@0: Removed PNG_CONST from the sRGB table declarations in pngpriv.h and png.c michael@0: Added run-time detection of NEON support. michael@0: Added contrib/libtests; includes simplified API test and timing test and michael@0: a color conversion utility for rapid checking of failed 'pngstest' results. michael@0: Multiple transform bug fixes plus a work-round for double gamma correction. michael@0: libpng does not support more than one transform that requires linear data michael@0: at once - if this is tried typically the results is double gamma michael@0: correction. Since the simplified APIs can need rgb to gray combined with michael@0: a compose operation it is necessary to do one of these outside the main michael@0: libpng transform code. This check-in also contains fixes to various bugs michael@0: in the simplified APIs themselves and to some bugs in compose and rgb to michael@0: gray (on palette) itself. michael@0: Fixes for C++ compilation using g++ When libpng source is compiled michael@0: using g++. The compiler imposes C++ rules on the C source; thus it michael@0: is desireable to make the source work with either C or C++ rules michael@0: without throwing away useful error information. This change adds michael@0: png_voidcast to allow C semantic (void*) cases or the corresponding michael@0: C++ static_cast operation, as appropriate. michael@0: Added --noexecstack to assembler file compilation. GCC does not set michael@0: this on assembler compilation, even though it does on C compilation. michael@0: This creates security issues if assembler code is enabled; the michael@0: work-around is to set it by default in the flags for $(CCAS) michael@0: Work around compilers that don't support declaration of const data. Some michael@0: compilers fault 'extern const' data declarations (because the data is michael@0: not initialized); this turns on const-ness only for compilers where michael@0: this is known to work. michael@0: michael@0: Version 1.5.7beta04 [November 17, 2011] michael@0: Since the gcc driver does not recognize the --noexecstack flag, we must michael@0: use the -Wa prefix to have it passed through to the assembler. michael@0: Also removed a duplicate setting of this flag. michael@0: Added files that were omitted from the libpng-1.5.7beta03 zip distribution. michael@0: michael@0: Version 1.5.7beta05 [November 25, 2011] michael@0: Removed "zTXt" from warning in generic chunk decompression function. michael@0: Validate time settings passed to pngset() and png_convert_to_rfc1123() michael@0: (Frank Busse). michael@0: Added MINGW support to CMakeLists.txt michael@0: Reject invalid compression flag or method when reading the iTXt chunk. michael@0: Backed out 'simplified' API changes. The API seems too complex and there michael@0: is a lack of consensus or enthusiasm for the proposals. The API also michael@0: reveals significant bugs inside libpng (double gamma correction and the michael@0: known bug of being unable to retrieve a corrected palette). It seems michael@0: better to wait until the bugs, at least, are corrected. michael@0: Moved pngvalid.c into contrib/libtests michael@0: Rebuilt Makefile.in, configure, etc., with autoconf-2.68 michael@0: michael@0: Version 1.5.7rc01 [December 1, 2011] michael@0: Replaced an "#if" with "#ifdef" in pngrtran.c michael@0: Revised #if PNG_DO_BC block in png.c (use #ifdef and add #else) michael@0: michael@0: Version 1.5.7rc02 [December 5, 2011] michael@0: Revised project files and contrib/pngvalid/pngvalid.c to account for michael@0: the relocation of pngvalid into contrib/libtests. michael@0: Revised pngconf.h to use " __declspec(restrict)" only when MSC_VER >= 1400, michael@0: as in libpng-1.5.4. michael@0: Put CRLF line endings in the owatcom project files. michael@0: michael@0: Version 1.5.7rc03 [December 7, 2011] michael@0: Updated CMakeLists.txt to account for the relocation of pngvalid.c michael@0: michael@0: Version 1.5.7 [December 15, 2011] michael@0: Minor fixes to pngvalid.c for gcc 4.6.2 compatibility to remove warnings michael@0: reported by earlier versions. michael@0: Fixed minor memset/sizeof errors in pngvalid.c. michael@0: michael@0: Version 1.6.0beta01 [December 15, 2011] michael@0: Removed machine-generated configure files from the GIT repository (they will michael@0: continue to appear in the tarball distributions and in the libpng15 and michael@0: earlier GIT branches). michael@0: Restored the new 'simplified' API, which was started in libpng-1.5.7beta02 michael@0: but later deleted from libpng-1.5.7beta05. michael@0: Added example programs for the new 'simplified' API. michael@0: Added ANSI-C (C90) headers and require them, and take advantage of the michael@0: change. Also fixed some of the projects/* and contrib/* files that needed michael@0: updates for libpng16 and the move of pngvalid.c. michael@0: With this change the required ANSI-C header files are assumed to exist: the michael@0: implementation must provide float.h, limits.h, stdarg.h and stddef.h and michael@0: libpng relies on limits.h and stddef.h existing and behaving as defined michael@0: (the other two required headers aren't used). Non-ANSI systems that don't michael@0: have stddef.h or limits.h will have to provide an appropriate fake michael@0: containing the relevant types and #defines. michael@0: The use of FAR/far has been eliminated and the definition of png_alloc_size_t michael@0: is now controlled by a flag so that 'small size_t' systems can select it michael@0: if necessary. Libpng 1.6 may not currently work on such systems -- it michael@0: seems likely that it will ask 'malloc' for more than 65535 bytes with any michael@0: image that has a sufficiently large row size (rather than simply failing michael@0: to read such images). michael@0: New tools directory containing tools used to generate libpng code. michael@0: Fixed race conditions in parallel make builds. With higher degrees of michael@0: parallelism during 'make' the use of the same temporary file names such michael@0: as 'dfn*' can result in a race where a temporary file from one arm of the michael@0: build is deleted or overwritten in another arm. This changes the michael@0: temporary files for suffix rules to always use $* and ensures that the michael@0: non-suffix rules use unique file names. michael@0: michael@0: Version 1.6.0beta02 [December 21, 2011] michael@0: Correct configure builds where build and source directories are separate. michael@0: The include path of 'config.h' was erroneously made relative in pngvalid.c michael@0: in libpng 1.5.7. michael@0: michael@0: Version 1.6.0beta03 [December 22, 2011] michael@0: Start-up code size improvements, error handler flexibility. These changes michael@0: alter how the tricky allocation of the initial png_struct and png_info michael@0: structures are handled. png_info is now handled in pretty much the same michael@0: way as everything else, except that the allocations handle NULL return michael@0: silently. png_struct is changed in a similar way on allocation and on michael@0: deallocation a 'safety' error handler is put in place (which should never michael@0: be required). The error handler itself is changed to permit mismatches michael@0: in the application and libpng error buffer size; however, this means a michael@0: silent change to the API to return the jmp_buf if the size doesn't match michael@0: the size from the libpng compilation; libpng now allocates the memory and michael@0: this may fail. Overall these changes result in slight code size michael@0: reductions; however, this is a reduction in code that is always executed michael@0: so is particularly valuable. Overall on a 64-bit system the libpng DLL michael@0: decreases in code size by 1733 bytes. pngerror.o increases in size by michael@0: about 465 bytes because of the new functionality. michael@0: Added png_convert_to_rfc1123_buffer() and deprecated png_convert_to_rfc1123() michael@0: to avoid including a spurious buffer in the png_struct. michael@0: michael@0: Version 1.6.0beta04 [December 30, 2011] michael@0: Regenerated configure scripts with automake-1.11.2 michael@0: Eliminated png_info_destroy(). It is now used only in png.c and only calls michael@0: one other internal function and memset(). michael@0: Enabled png_get_sCAL_fixed() if floating point APIs are enabled. Previously michael@0: it was disabled whenever internal fixed point arithmetic was selected, michael@0: which meant it didn't exist even on systems where FP was available but not michael@0: preferred. michael@0: Added pngvalid.c compile time checks for const APIs. michael@0: Implemented 'restrict' for png_info and png_struct. Because of the way michael@0: libpng works both png_info and png_struct are always accessed via a michael@0: single pointer. This means adding C99 'restrict' to the pointer gives michael@0: the compiler some opportunity to optimize the code. This change allows michael@0: that. michael@0: Moved AC_MSG_CHECKING([if libraries can be versioned]) later to the proper michael@0: location in configure.ac (Gilles Espinasse). michael@0: Changed png_memcpy to C assignment where appropriate. Changed all those michael@0: uses of png_memcpy that were doing a simple assignment to assignments michael@0: (all those cases where the thing being copied is a non-array C L-value). michael@0: Added some error checking to png_set_*() routines. michael@0: Removed the reference to the non-exported function png_memcpy() from michael@0: example.c. michael@0: Fixed the Visual C 64-bit build - it requires jmp_buf to be aligned, but michael@0: it had become misaligned. michael@0: Revised contrib/pngminus/pnm2png.c to avoid warnings when png_uint_32 michael@0: and unsigned long are of different sizes. michael@0: michael@0: Version 1.6.0beta05 [January 15, 2012] michael@0: Updated manual with description of the simplified API (copied from png.h) michael@0: Fix bug in pngerror.c: some long warnings were being improperly truncated michael@0: (CVE-2011-3464, bug introduced in libpng-1.5.3beta05). michael@0: michael@0: Version 1.6.0beta06 [January 24, 2012] michael@0: Added palette support to the simplified APIs. This commit michael@0: changes some of the macro definitions in png.h, app code michael@0: may need corresponding changes. michael@0: Increased the formatted warning buffer to 192 bytes. michael@0: Added color-map support to simplified API. This is an initial version for michael@0: review; the documentation has not yet been updated. michael@0: Fixed Min/GW uninstall to remove libpng.dll.a michael@0: michael@0: Version 1.6.0beta07 [January 28, 2012] michael@0: Eliminated Intel icc/icl compiler warnings. The Intel (GCC derived) michael@0: compiler issues slightly different warnings from those issued by the michael@0: current vesions of GCC. This eliminates those warnings by michael@0: adding/removing casts and small code rewrites. michael@0: Updated configure.ac from autoupdate: added --enable-werror option. michael@0: Also some layout regularization and removal of introduced tab characters michael@0: (replaced with 3-character indentation). Obsolete macros identified by michael@0: autoupdate have been removed; the replacements are all in 2.59 so michael@0: the pre-req hasn't been changed. --enable-werror checks for support michael@0: for -Werror (or the given argument) in the compiler. This mimics the michael@0: gcc configure option by allowing -Werror to be turned on safely; without michael@0: the option the tests written in configure itself fail compilation because michael@0: they cause compiler warnings. michael@0: Rewrote autogen.sh to run autoreconf instead of running tools one-by-one. michael@0: Conditionalize the install rules for MINGW and CYGWIN in CMakeLists.txt and michael@0: set CMAKE_LIBRARY_OUTPUT_DIRECTORY to "lib" on all platforms (C. Yapp). michael@0: Freeze libtool files in the 'scripts' directory. This version of autogen.sh michael@0: attempts to dissuade people from running it when it is not, or should not, michael@0: be necessary. In fact, autogen.sh does not work when run in a libpng michael@0: directory extracted from a tar distribution anymore. You must run it in michael@0: a GIT clone instead. michael@0: Added two images to contrib/pngsuite (1-bit and 2-bit transparent grayscale), michael@0: and renamed three whose names were inconsistent with those in michael@0: pngsuite/README.txt. michael@0: michael@0: Version 1.6.0beta08 [February 1, 2012] michael@0: Fixed Image::colormap misalignment in pngstest.c michael@0: Check libtool/libtoolize version number (2.4.2) in configure.ac michael@0: Divide test-pngstest.sh into separate pngstest runs for basic and michael@0: transparent images. michael@0: Moved automake options to AM_INIT_AUTOMAKE in configure.ac michael@0: Added color-tests, silent-rules (Not yet implemented in Makefile.am) and michael@0: version checking to configure.ac michael@0: Improved pngstest speed by not doing redundant tests and add const to michael@0: the background parameter of png_image_finish_read. The --background michael@0: option is now done automagically only when required, so that commandline michael@0: option no longer exists. michael@0: Cleaned up pngpriv.h to consistently declare all functions and data. michael@0: Also eliminated PNG_CONST_DATA, which is apparently not needed but we michael@0: can't be sure until it is gone. michael@0: Added symbol prefixing that allows all the libpng external symbols michael@0: to be prefixed (suggested by Reuben Hawkins). michael@0: Updated "ftbb*.png" list in the owatcom and vstudio projects. michael@0: Fixed 'prefix' builds on clean systems. The generation of pngprefix.h michael@0: should not require itself. michael@0: Updated INSTALL to explain that autogen.sh must be run in a GIT clone, michael@0: not in a libpng directory extracted from a tar distribution. michael@0: michael@0: Version 1.6.0beta09 [February 1, 2012] michael@0: Reverted the prebuilt configure files to libpng-1.6.0beta05 condition. michael@0: michael@0: Version 1.6.0beta10 [February 3, 2012] michael@0: Added Z_SOLO for zlib-1.2.6+ and correct pngstest tests michael@0: Updated list of test images in CMakeLists.txt michael@0: Updated the prebuilt configure files to current condition. michael@0: Revised INSTALL information about autogen.sh; it works in tar distributions. michael@0: michael@0: Version 1.6.0beta11 [February 16, 2012] michael@0: Fix character count in pngstest command in projects/owatcom/pngstest.tgt michael@0: Revised test-pngstest.sh to report PASS/FAIL for each image. michael@0: Updated documentation about the simplified API. michael@0: Corrected estimate of error in libpng png_set_rgb_to_gray API. The API is michael@0: extremely inaccurate for sRGB conversions because it uses an 8-bit michael@0: intermediate linear value and it does not use the sRGB transform, so it michael@0: suffers from the known instability in gamma transforms for values close michael@0: to 0 (see Poynton). The net result is that the calculation has a maximum michael@0: error of 14.99/255; 0.5/255^(1/2.2). pngstest now uses 15 for the michael@0: permitted 8-bit error. This may still not be enough because of arithmetic michael@0: error. michael@0: Removed some unused arrays (with #ifdef) from png_read_push_finish_row(). michael@0: Fixed a memory overwrite bug in simplified read of RGB PNG with michael@0: non-linear gamma Also bugs in the error checking in pngread.c and changed michael@0: quite a lot of the checks in pngstest.c to be correct; either correctly michael@0: written or not over-optimistic. The pngstest changes are insufficient to michael@0: allow all possible RGB transforms to be passed; pngstest cmppixel needs michael@0: to be rewritten to make it clearer which errors it allows and then changed michael@0: to permit known inaccuracies. michael@0: Removed tests for no-longer-used *_EMPTY_PLTE_SUPPORTED from pngstruct.h michael@0: Fixed fixed/float API export conditionals. 1) If FIXED_POINT or michael@0: FLOATING_POINT options were switched off, png.h ended up with lone ';' michael@0: characters. This is not valid ANSI-C outside a function. The ';' michael@0: characters have been moved inside the definition of PNG_FP_EXPORT and michael@0: PNG_FIXED_EXPORT. 2) If either option was switched off, the declaration michael@0: of the corresponding functions were completely omitted, even though some michael@0: of them are still used internally. The result is still valid, but michael@0: produces warnings from gcc with some warning options (including -Wall). The michael@0: fix is to cause png.h to declare the functions with PNG_INTERNAL_FUNCTION michael@0: when png.h is included from pngpriv.h. michael@0: Check for invalid palette index while reading paletted PNG. When one is michael@0: found, issue a warning and increase png_ptr->num_palette accordingly. michael@0: Apps are responsible for checking to see if that happened. michael@0: michael@0: Version 1.6.0beta12 [February 18, 2012] michael@0: Do not increase num_palette on invalid_index. michael@0: Relocated check for invalid palette index to pngrtran.c, after unpacking michael@0: the sub-8-bit pixels. michael@0: Fixed CVE-2011-3026 buffer overrun bug. This bug was introduced when michael@0: iCCP chunk support was added at libpng-1.0.6. Deal more correctly with the michael@0: test on iCCP chunk length. Also removed spurious casts that may hide michael@0: problems on 16-bit systems. michael@0: michael@0: Version 1.6.0beta13 [February 24, 2012] michael@0: Eliminated redundant png_push_read_tEXt|zTXt|iTXt|unknown code from michael@0: pngpread.c and use the sequential png_handle_tEXt, etc., in pngrutil.c; michael@0: now that png_ptr->buffer is inaccessible to applications, the special michael@0: handling is no longer useful. michael@0: Added PNG_SAFE_LIMITS feature to pnglibconf.dfa, pngpriv.h, and new michael@0: pngusr.dfa to reset the user limits to safe ones if PNG_SAFE_LIMITS is michael@0: defined. To enable, use "CPPFLAGS=-DPNG_SAFE_LIMITS_SUPPORTED=1" on the michael@0: configure command or put #define PNG_SAFE_LIMITS_SUPPORTED in michael@0: pnglibconf.h.prebuilt and pnglibconf.h. michael@0: michael@0: Version 1.6.0beta14 [February 27, 2012] michael@0: Added information about the new limits in the manual. michael@0: Updated Makefile.in michael@0: michael@0: Version 1.6.0beta15 [March 2, 2012] michael@0: Removed unused "current_text" members of png_struct and the png_free() michael@0: of png_ptr->current_text from pngread.c michael@0: Rewrote pngstest.c for substantial speed improvement. michael@0: Fixed transparent pixel and 16-bit rgb tests in pngstest and removed a michael@0: spurious check in pngwrite.c michael@0: Added PNG_IMAGE_FLAG_FAST for the benefit of applications that store michael@0: intermediate files, or intermediate in-memory data, while processing michael@0: image data with the simplified API. The option makes the files larger michael@0: but faster to write and read. pngstest now uses this by default; this michael@0: can be disabled with the --slow option. michael@0: Improved pngstest fine tuning of error numbers, new test file generator. michael@0: The generator generates images that test the full range of sample values, michael@0: allow the error numbers in pngstest to be tuned and checked. makepng michael@0: also allows generation of images with extra chunks, although this is michael@0: still work-in-progress. michael@0: Added check for invalid palette index while reading. michael@0: Fixed some bugs in ICC profile writing. The code should now accept michael@0: all potentially valid ICC profiles and reject obviously invalid ones. michael@0: It now uses png_error() to do so rather than casually writing a PNG michael@0: without the necessary color data. michael@0: Removed whitespace from the end of lines in all source files and scripts. michael@0: michael@0: Version 1.6.0beta16 [March 6, 2012] michael@0: Relocated palette-index checking function from pngrutil.c to pngtrans.c michael@0: Added palette-index checking while writing. michael@0: Changed png_inflate() and calling routines to avoid overflow problems. michael@0: This is an intermediate check-in that solves the immediate problems and michael@0: introduces one performance improvement (avoiding a copy via png_ptr->zbuf.) michael@0: Further changes will be made to make ICC profile handling more secure. michael@0: Fixed build warnings (MSVC, GCC, GCC v3). Cygwin GCC with default options michael@0: declares 'index' as a global, causing a warning if it is used as a local michael@0: variable. GCC 64-bit warns about assigning a (size_t) (unsigned 64-bit) michael@0: to an (int) (signed 32-bit). MSVC, however, warns about using the michael@0: unary '-' operator on an unsigned value (even though it is well defined michael@0: by ANSI-C to be ~x+1). The padding calculation was changed to use a michael@0: different method. Removed the tests on png_ptr->pass. michael@0: Added contrib/libtests/tarith.c to test internal arithmetic functions from michael@0: png.c. This is a libpng maintainer program used to validate changes to the michael@0: internal arithmetic functions. michael@0: Made read 'inflate' handling like write 'deflate' handling. The read michael@0: code now claims and releases png_ptr->zstream, like the write code. michael@0: The bug whereby the progressive reader failed to release the zstream michael@0: is now fixed, all initialization is delayed, and the code checks for michael@0: changed parameters on deflate rather than always calling michael@0: deflatedEnd/deflateInit. michael@0: Validate the zTXt strings in pngvalid. michael@0: Added code to validate the windowBits value passed to deflateInit2(). michael@0: If the call to deflateInit2() is wrong a png_warning will be issued michael@0: (in fact this is harmless, but the PNG data produced may be sub-optimal). michael@0: michael@0: Version 1.6.0beta17 [March 10, 2012] michael@0: Fixed PNG_LIBPNG_BUILD_BASE_TYPE definition. michael@0: Reject all iCCP chunks after the first, even if the first one is invalid. michael@0: Deflate/inflate was reworked to move common zlib calls into single michael@0: functions [rw]util.c. A new shared keyword check routine was also added michael@0: and the 'zbuf' is no longer allocated on progressive read. It is now michael@0: possible to call png_inflate() incrementally. A warning is no longer michael@0: issued if the language tag or translated keyword in the iTXt chunk michael@0: has zero length. michael@0: If benign errors are disabled use maximum window on ancilliary inflate. michael@0: This works round a bug introduced in 1.5.4 where compressed ancillary michael@0: chunks could end up with a too-small windowBits value in the deflate michael@0: header. michael@0: michael@0: Version 1.6.0beta18 [March 16, 2012] michael@0: Issue a png_benign_error() instead of png_warning() about bad palette index. michael@0: In pngtest, treat benign errors as errors if "-strict" is present. michael@0: Fixed an off-by-one error in the palette index checking function. michael@0: Fixed a compiler warning under Cygwin (Windows-7, 32-bit system) michael@0: Revised example.c to put text strings in a temporary character array michael@0: instead of directly assigning string constants to png_textp members. michael@0: This avoids compiler warnings when -Wwrite-strings is enabled. michael@0: Added output flushing to aid debugging under Visual Studio. Unfortunately michael@0: this is necessary because the VS2010 output window otherwise simply loses michael@0: the error messages on error (they weren't flushed to the window before michael@0: the process exited, apparently!) michael@0: Added configuration support for benign errors and changed the read michael@0: default. Also changed some warnings in the iCCP and sRGB handling michael@0: from to benign errors. Configuration now makes read benign michael@0: errors warnings and write benign errors to errors by default (thus michael@0: changing the behavior on read). The simplified API always forces michael@0: read benign errors to warnings (regardless of the system default, unless michael@0: this is disabled in which case the simplified API can't be built.) michael@0: michael@0: Version 1.6.0beta19 [March 18, 2012] michael@0: Work around for duplicate row start calls; added warning messages. michael@0: This turns on PNG_FLAG_DETECT_UNINITIALIZED to detect app code that michael@0: fails to call one of the 'start' routines (not enabled in libpng-1.5 michael@0: because it is technically an API change, since it did normally work michael@0: before.) It also makes duplicate calls to png_read_start_row (an michael@0: internal function called at the start of the image read) benign, as michael@0: they were before changes to use png_inflate_claim. Somehow webkit is michael@0: causing this to happen; this is probably a mis-feature in the zlib michael@0: changes so this commit is only a work-round. michael@0: Removed erroneous setting of DETECT_UNINITIALIZED and added more michael@0: checks. The code now does a png_error if an attempt is made to do the michael@0: row initialization twice; this is an application error and it has michael@0: serious consequences because the transform data in png_struct is michael@0: changed by each call. michael@0: Added application error reporting and added chunk names to read michael@0: benign errors; also added --strict to pngstest - not enabled michael@0: yet because a warning is produced. michael@0: Avoid the double gamma correction warning in the simplified API. michael@0: This allows the --strict option to pass in the pngstest checks michael@0: michael@0: Version 1.6.0beta20 [March 29, 2012] michael@0: Changed chunk handler warnings into benign errors, incrementally load iCCP michael@0: Added checksum-icc.c to contrib/tools michael@0: Prevent PNG_EXPAND+PNG_SHIFT doing the shift twice. michael@0: Recognize known sRGB ICC profiles while reading; prefer writing the michael@0: iCCP profile over writing the sRGB chunk, controlled by the michael@0: PNG_sRGB_PROFILE_CHECKS option. michael@0: Revised png_set_text_2() to avoid potential memory corruption (fixes michael@0: CVE-2011-3048, also known as CVE-2012-3425). michael@0: michael@0: Version 1.6.0beta21 [April 27, 2012] michael@0: Revised scripts/makefile.darwin: use system zlib; remove quotes around michael@0: architecture list; add missing ppc architecture; add architecture options michael@0: to shared library link; don't try to create a shared lib based on missing michael@0: RELEASE variable. michael@0: Enable png_set_check_for_invalid_index() for both read and write. michael@0: Removed #ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED in pngpriv.h around michael@0: declaration of png_handle_unknown(). michael@0: Added -lssp_nonshared in a comment in scripts/makefile.freebsd michael@0: and changed deprecated NOOBJ and NOPROFILE to NO_OBJ and NO_PROFILE. michael@0: michael@0: Version 1.6.0beta22 [May 23, 2012] michael@0: Removed need for -Wno-cast-align with clang. clang correctly warns on michael@0: alignment increasing pointer casts when -Wcast-align is passed. This michael@0: fixes the cases that clang warns about either by eliminating the michael@0: casts from png_bytep to png_uint_16p (pngread.c), or, for pngrutil.c michael@0: where the cast is previously verified or pngstest.c where it is OK, by michael@0: introducing new png_aligncast macros to do the cast in a way that clang michael@0: accepts. michael@0: michael@0: Version 1.6.0beta23 [June 6, 2012] michael@0: Revised CMakeLists.txt to not attempt to make a symlink under mingw. michael@0: Made fixes for new optimization warnings from gcc 4.7.0. The compiler michael@0: performs an optimization which is safe; however it then warns about it. michael@0: Changing the type of 'palette_number' in pngvalid.c removes the warning. michael@0: Do not depend upon a GCC feature macro being available for use in generating michael@0: the linker mapfile symbol prefix. michael@0: Improved performance of new do_check_palette_indexes() function (only michael@0: update the value when it actually increases, move test for whether michael@0: the check is wanted out of the function. michael@0: michael@0: Version 1.6.0beta24 [June 7, 2012] michael@0: Don't check palette indexes if num_palette is 0 (as it can be in MNG files). michael@0: michael@0: Version 1.6.0beta25 [June 16, 2012] michael@0: Revised png_set_keep_unknown_chunks() so num_chunks < 0 means ignore all michael@0: unknown chunks and all known chunks except for IHDR, PLTE, tRNS, IDAT, michael@0: and IEND. Previously it only meant ignore all unknown chunks, the michael@0: same as num_chunks == 0. Revised png_image_skip_unused_chunks() to michael@0: provide a list of chunks to be processed instead of a list of chunks to michael@0: ignore. Revised contrib/gregbook/readpng2.c accordingly. michael@0: michael@0: Version 1.6.0beta26 [July 10, 2012] michael@0: Removed scripts/makefile.cegcc from the *.zip and *.7z distributions; it michael@0: depends on configure, which is not included in those archives. michael@0: Moved scripts/chkfmt to contrib/tools. michael@0: Changed "a+w" to "u+w" in Makefile.in to fix CVE-2012-3386. michael@0: michael@0: Version 1.6.0beta27 [August 11, 2012] michael@0: Do not compile PNG_DEPRECATED, PNG_ALLOC and PNG_PRIVATE when __GNUC__ < 3. michael@0: Do not use __restrict when GNUC is <= 3.1 michael@0: Removed references to png_zalloc() and png_zfree() from the manual. michael@0: Fixed configurations where floating point is completely disabled. Because michael@0: of the changes to support symbol prefixing PNG_INTERNAL_FUNCTION declares michael@0: floating point APIs during libpng builds even if they are completely michael@0: disabled. This requires the png floating point types (png_double*) to be michael@0: declared even though the functions are never actually defined. This michael@0: change provides a dummy definition so that the declarations work, yet any michael@0: implementation will fail to compile because of an incomplete type. michael@0: Re-eliminated the use of strcpy() in pngtest.c. An unncessary use of michael@0: strcpy() was accidentally re-introduced in libpng16; this change replaces michael@0: it with strncpy(). michael@0: Eliminated use of png_sizeof(); use sizeof() instead. michael@0: Use a consistent style for (sizeof type) and (sizeof (array)) michael@0: Cleanup of png_set_filler(). This function does very different things on michael@0: read and write. In libpng 1.6 the two cases can be distinguished and michael@0: considerable code cleanup, and extra error checking, is possible. This michael@0: makes calls on the write side that have no effect be ignored with a michael@0: png_app_error(), which can be disabled in the app using michael@0: png_set_benign_errors(), and removes the spurious use of usr_channels michael@0: on the read side. michael@0: Insist on autotools 1.12.1 for git builds because there are security issues michael@0: with 1.12 and insisting on anything less would allow 1.12 to be used. michael@0: Removed info_ptr->signature[8] from WRITE-only builds. michael@0: Add some conditions for compiling png_fixed(). This is a small function michael@0: but it requires "-lm" on some platforms. michael@0: Cause pngtest --strict to fail on any warning from libpng (not just errors) michael@0: and cause it not to fail at the comparison step if libpng lacks support michael@0: for writing chunks that it reads from the input (currently only implemented michael@0: for compressed text chunks). michael@0: Make all three "make check" test programs work without READ or WRITE support. michael@0: Now "make check" will succeed even if libpng is compiled with -DPNG_NO_READ michael@0: or -DPNG_NO_WRITE. The tests performed are reduced, but the basic reading michael@0: and writing of a PNG file is always tested by one or more of the tests. michael@0: Consistently use strlen(), memset(), memcpy(), and memcmp() instead of the michael@0: png_strlen(), png_memset(), png_memcpy(), and png_memcmp() macros. michael@0: Removed the png_sizeof(), png_strlen(), png_memset(), png_memcpy(), and michael@0: png_memcmp() macros. michael@0: Work around gcc 3.x and Microsoft Visual Studio 2010 complaints. Both object michael@0: to the split initialization of num_chunks. michael@0: michael@0: Version 1.6.0beta28 [August 29, 2012] michael@0: Unknown handling fixes and clean up. This adds more correct option michael@0: control of the unknown handling, corrects the pre-existing bug where michael@0: the per-chunk 'keep' setting is ignored and makes it possible to skip michael@0: IDAT chunks in the sequential reader (broken in earlier 1.6 versions). michael@0: There is a new test program, test-unknown.c, which is a work in progress michael@0: (not currently part of the test suite). Comments in the header files now michael@0: explain how the unknown handling works. michael@0: Allow fine grain control of unknown chunk APIs. This change allows michael@0: png_set_keep_unknown_chunks() to be turned off if not required and causes michael@0: both read and write to behave appropriately (on read this is only possible michael@0: if the user callback is used to handle unknown chunks). The change michael@0: also removes the support for storing unknown chunks in the info_struct michael@0: if the only unknown handling enabled is via the callback, allowing libpng michael@0: to be configured with callback reading and none of the unnecessary code. michael@0: Corrected fix for unknown handling in pngtest. This reinstates the michael@0: libpng handling of unknown chunks other than vpAg and sTER (including michael@0: unsafe-to-copy chunks which were dropped before) and eliminates the michael@0: repositioning of vpAg and sTER in pngtest.png by changing pngtest.png michael@0: (so the chunks are where libpng would put them). michael@0: Added "tunknown" test and corrected a logic error in png_handle_unknown() michael@0: when SAVE support is absent. Moved the shell test scripts for michael@0: contrib/libtests from the libpng top directory to contrib/libtests. michael@0: png_handle_unknown() must always read or skip the chunk, if michael@0: SAVE_UNKNOWN_CHUNKS is turned off *and* the application does not set michael@0: a user callback an unknown chunk will not be read, leading to a read michael@0: error, which was revealed by the "tunknown" test. michael@0: Cleaned up and corrected ICC profile handling. michael@0: contrib/libtests/makepng: corrected 'rgb' and 'gray' cases. profile_error michael@0: messages could be truncated; made a correct buffer size calculation and michael@0: adjusted pngerror.c appropriately. png_icc_check_* checking improved; michael@0: changed the functions to receive the correct color type of the PNG on read michael@0: or write and check that it matches the color space of the profile (despite michael@0: what the comments said before, there is danger in assuming the app will michael@0: cope correctly with an RGB profile on a grayscale image and, since it michael@0: violates the PNG spec, allowing it is certain to produce inconsistent michael@0: app behavior and might even cause app crashes.) Check that profiles michael@0: contain the tags needed to process the PNG (tags all required by the ICC michael@0: spec). Removed unused PNG_STATIC from pngpriv.h. michael@0: michael@0: Version 1.6.0beta29 [September 4, 2012] michael@0: Fixed the simplified API example programs to add the *colormap parameter michael@0: to several of he API and improved the error message if the version field michael@0: is not set. michael@0: Added contrib/examples/* to the *.zip and *.7z distributions. michael@0: Updated simplified API synopses and description of the png_image structure michael@0: in the manual. michael@0: Made makepng and pngtest produce identical PNGs, add "--relaxed" option michael@0: to pngtest. The "--relaxed" option turns off the benign errors that are michael@0: enabled by default in pre-RC builds. makepng can now write ICC profiles michael@0: where the length has not been extended to a multiple of 4, and pngtest michael@0: now intercepts all libpng errors, allowing the previously-introduced michael@0: "--strict test" on no warnings to actually work. michael@0: Improved ICC profile handling including cHRM chunk generation and fixed michael@0: Cygwin+MSVC build errors. The ICC profile handling now includes more michael@0: checking. Several errors that caused rejection of the profile are now michael@0: handled with a warning in such a way that the invalid profiles will be michael@0: read by default in release (but not pre-RC) builds but will not be michael@0: written by default. The easy part of handling the cHRM chunk is written, michael@0: where the ICC profile contains the required data. The more difficult michael@0: part plus guessing a gAMA value requires code to pass selected RGB values michael@0: through the profile. michael@0: michael@0: Version 1.6.0beta30 [October 24, 2012] michael@0: Changed ICC profile matrix/vector types to not depend on array type rules. michael@0: By the ANSI-C standard the new types should be identical to the previous michael@0: versions, and all known versions of gcc tested with the previous versions michael@0: except for GCC-4.2.1 work with this version. The change makes the ANSI-C michael@0: rule that const applied to an array of elements applies instead to the michael@0: elements in the array moot by explicitly applying const to the base michael@0: elements of the png_icc_matrix and png_icc_vector types. The accidental michael@0: (harmless) 'const' previously applied to the parameters of two of the michael@0: functions have also been removed. michael@0: Added a work around for GCC 4.2 optimization bug. michael@0: Marked the broken (bad white point) original HP sRGB profiles correctly and michael@0: correct comments. michael@0: Added -DZ_SOLO to contrib/pngminim/*/makefile to work with zlib-1.2.7 michael@0: Use /MDd for vstudio debug builds. Also added pngunkown to the vstudio michael@0: builds, fixed build errors and corrected a minor exit code error in michael@0: pngvalid if the 'touch' file name is invalid. michael@0: Add updated WARNING file to projects/vstudio from libpng 1.5/vstudio michael@0: Fixed build when using #define PNG_NO_READ_GAMMA in png_do_compose() in michael@0: pngrtran.c (Domani Hannes). michael@0: michael@0: Version 1.6.0beta31 [November 1, 2012] michael@0: Undid the erroneous change to vstudio/pngvalid build in libpng-1.6.0beta30. michael@0: Made pngvalid so that it will build outside the libpng source tree. michael@0: Made builds -DPNG_NO_READ_GAMMA compile (the unit tests still fail). michael@0: Made PNG_NO_READ_GAMMA switch off interfaces that depend on READ_GAMMA. michael@0: Prior to 1.6.0 switching off READ_GAMMA did unpredictable things to the michael@0: interfaces that use it (specifically, png_do_background in 1.4 would michael@0: simply display composite for grayscale images but do composition michael@0: with the incorrect arithmetic for color ones). In 1.6 the semantic michael@0: of -DPNG_NO_READ_GAMMA is changed to simply disable any interface that michael@0: depends on it; this obliges people who set it to consider whether they michael@0: really want it off if they happen to use any of the interfaces in michael@0: question (typically most users who disable it won't). michael@0: Fixed GUIDs in projects/vstudio. Some were duplicated or missing, michael@0: resulting in VS2010 having to update the files. michael@0: Removed non-working ICC profile support code that was mostly added to michael@0: libpng-1.6.0beta29 and beta30. There was too much code for too little michael@0: gain; implementing full ICC color correction may be desireable but is left michael@0: up to applications. michael@0: michael@0: Version 1.6.0beta32 [November 25, 2012] michael@0: Fixed an intermittent SEGV in pngstest due to an uninitialized array element. michael@0: Added the ability for contrib/libtests/makepng.c to make a PNG with just one michael@0: color. This is useful for debugging pngstest color inaccuracy reports. michael@0: Fixed error checking in the simplified write API (Olaf van der Spek) michael@0: Made png_user_version_check() ok to use with libpng version 1.10.x and later. michael@0: michael@0: Version 1.6.0beta33 [December 15, 2012] michael@0: Fixed typo in png.c (PNG_SET_CHUNK_MALLOC_MAX should be PNG_CHUNK_MALLOC_MAX) michael@0: that causes the MALLOC_MAX limit not to work (John Bowler) michael@0: Change png_warning() to png_app_error() in pngwrite.c and comment the michael@0: fall-through condition. michael@0: Change png_warning() to png_app_warning() in png_write_tRNS(). michael@0: Rearranged the ARM-NEON optimizations: Isolated the machine specific code michael@0: to the hardware subdirectory and added comments to pngrutil.c so that michael@0: implementors of other optimizations know what to do. michael@0: Fixed cases of unquoted DESTDIR in Makefile.am michael@0: Rebuilt Makefile.in, etc., with autoconf-2.69 and automake-1.12.5. michael@0: michael@0: Version 1.6.0beta34 [December 19, 2012] michael@0: Cleaned up whitespace in the synopsis portion of the manpage "libpng.3" michael@0: Disassembled the version number in scripts/options.awk (necessary for michael@0: building on SunOs). michael@0: michael@0: Version 1.6.0beta35 [December 23, 2012] michael@0: Made default Zlib compression settings be configurable. This adds #defines to michael@0: pnglibconf.h to control the defaults. michael@0: Fixed Windows build issues, enabled ARM compilation. Various warnings issued michael@0: by earlier versions of GCC fixed for Cygwin and Min/GW (which both use old michael@0: GCCs.) ARM support is enabled by default in zlib.props (unsupported by michael@0: Microsoft) and ARM compilation is made possible by deleting the check for michael@0: x86. The test programs cannot be run because they are not signed. michael@0: michael@0: Version 1.6.0beta36 [January 2, 2013] michael@0: Discontinued distributing libpng-1.x.x.tar.bz2. michael@0: Discontinued distributing libpng-1.7.0-1.6.0-diff.txt and similar. michael@0: Rebuilt configure with autoconf-2.69 (inadvertently not done in beta33) michael@0: Fixed 'make distcheck' on SUN OS - libpng.so was not being removed michael@0: michael@0: Version 1.6.0beta37 [January 10, 2013] michael@0: Fixed conceivable but difficult to repro overflow. Also added two test michael@0: programs to generate and test a PNG which should have the problem. michael@0: michael@0: Version 1.6.0beta39 [January 19, 2013] michael@0: Again corrected attempt at overflow detection in png_set_unknown_chunks(). michael@0: Added overflow detection in png_set_sPLT() and png_set_text_2(). michael@0: michael@0: Version 1.6.0beta40 [January 20, 2013] michael@0: Use consistent handling of overflows in text, sPLT and unknown png_set_* APIs michael@0: michael@0: Version 1.6.0rc01 [January 26, 2013] michael@0: No changes. michael@0: michael@0: Version 1.6.0rc02 [February 4, 2013] michael@0: Added png_get_palette_max() function. michael@0: michael@0: Version 1.6.0rc03 [February 5, 2013] michael@0: Fixed the png_get_palette_max API. michael@0: michael@0: Version 1.6.0rc04 [February 7, 2013] michael@0: Turn serial tests back on (recently turned off by autotools upgrade). michael@0: michael@0: Version 1.6.0rc05 [February 8, 2013] michael@0: Update manual about png_get_palette_max(). michael@0: michael@0: Version 1.6.0rc06 [February 9, 2013] michael@0: Fixed missing dependency in --prefix builds The intermediate michael@0: internal 'prefix.h' file can only be generated correctly after michael@0: pnglibconf.h, however the dependency was not in Makefile.am. The michael@0: symptoms are unpredictable depending on the order make chooses to michael@0: build pngprefix.h and pnglibconf.h, often the error goes unnoticed michael@0: because there is a system pnglibconf.h to use instead. michael@0: michael@0: Version 1.6.0rc07 [February 10, 2013] michael@0: Enclosed the new png_get_palette_max in #ifdef PNG_GET_PALETTE_MAX_SUPPORTED michael@0: block, and revised pnglibconf.h and pnglibconf.h.prebuilt accordingly. michael@0: michael@0: Version 1.6.0rc08 [February 10, 2013] michael@0: Fix typo in png.h #ifdef michael@0: michael@0: Version 1.6.0 [February 14, 2013] michael@0: No changes. michael@0: michael@0: Version 1.6.1beta01 [February 16, 2013] michael@0: Made symbol prefixing work with the ARM neon optimizations. Also allow michael@0: pngpriv.h to be included for preprocessor definitions only, so it can michael@0: be used in non-C/C++ files. Back ported from libpng 1.7. michael@0: Made sRGB check numbers consistent. michael@0: Ported libpng 1.5 options.awk/dfn file handling to 1.6, fixed one bug. michael@0: Removed cc -E workround, corrected png_get_palette_max API Tested on michael@0: SUN OS cc 5.9, which demonstrates the tokenization problem previously michael@0: avoided by using /lib/cpp. Since all .dfn output is now protected in michael@0: double quotes unless it is to be macro substituted the fix should michael@0: work everywhere. michael@0: Enabled parallel tests - back ported from libpng-1.7. michael@0: scripts/pnglibconf.dfa formatting improvements back ported from libpng17. michael@0: Fixed a race condition in the creation of the build 'scripts' directory michael@0: while building with a parallel make. michael@0: Use approved/supported Android method to check for NEON, use Linux/POSIX michael@0: 1003.1 API to check /proc/self/auxv avoiding buffer allocation and other michael@0: library calls (ported from libpng15). michael@0: michael@0: Version 1.6.1beta02 [February 19, 2013] michael@0: Use parentheses more consistently in "#if defined(MACRO)" tests. michael@0: Folded long lines. michael@0: Reenabled code to allow zero length PLTE chunks for MNG. michael@0: michael@0: Version 1.6.1beta03 [February 22, 2013] michael@0: Fixed ALIGNED_MEMORY support. michael@0: Allow run-time ARM NEON checking to be disabled. A new configure option: michael@0: --enable-arm-neon=always will stop the run-time checks. New checks michael@0: within arm/arm_init.c will cause the code not to be compiled unless michael@0: __ARM_NEON__ is set. This should make it fail safe (if someone asks michael@0: for it on then the build will fail if it can't be done.) michael@0: Updated the INSTALL document. michael@0: michael@0: Version 1.6.1beta04 [February 27, 2013] michael@0: Revised INSTALL to recommend using CPPFLAGS instead of INCLUDES. michael@0: Revised scripts/makefile.freebsd to respect ZLIBLIB and ZLIBINC. michael@0: Revised scripts/dfn.awk to work with the buggy MSYS awk that has trouble michael@0: with CRLF line endings. michael@0: michael@0: Version 1.6.1beta05 [March 1, 2013] michael@0: Avoid a possible memory leak in contrib/gregbook/readpng.c michael@0: michael@0: Version 1.6.1beta06 [March 4, 2013] michael@0: Better documentation of unknown handling API interactions. michael@0: Corrected Android builds and corrected libpng.vers with symbol michael@0: prefixing This adds an API to set optimization options externally, michael@0: providing an alternative and general solution for the non-portable michael@0: run-time tests used by the ARM Neon code. It also makes those tests michael@0: compile and link on Android. michael@0: The order of settings vs options in pnglibconf.h is reversed to allow michael@0: settings to depend on options and options can now set (or override) the michael@0: defaults for settings. michael@0: michael@0: Version 1.6.1beta07 [March 7, 2013] michael@0: Corrected simplified API default gamma for color-mapped output, added michael@0: a flag to change default. In 1.6.0 when the simplified API was used michael@0: to produce color-mapped output from an input image with no gamma michael@0: information the gamma assumed for the input could be different from michael@0: that assumed for non-color-mapped output. In particular 16-bit depth michael@0: input files were assumed to be sRGB encoded, whereas in the 'direct' michael@0: case they were assumed to have linear data. This was an error. The michael@0: fix makes the simplified API treat all input files the same way and michael@0: adds a new flag to the png_image::flags member to allow the michael@0: application/user to specify that 16-bit files contain sRGB data michael@0: rather than the default linear. michael@0: Fixed bugs in the pngpixel and makepng test programs. michael@0: michael@0: Version 1.6.1beta08 [March 7, 2013] michael@0: Fixed CMakelists.txt to allow building a single variant of the library michael@0: (Claudio Bley): michael@0: Introduced a PNG_LIB_TARGETS variable that lists all activated library michael@0: targets. It is an error if this variable ends up empty, ie. you have michael@0: to build at least one library variant. michael@0: Made the *_COPY targets only depend on library targets actually being build. michael@0: Use PNG_LIB_TARGETS to unify a code path. michael@0: Changed the CREATE_SYMLINK macro to expect the full path to a file as the michael@0: first argument. When symlinking the filename component of that path is michael@0: determined and used as the link target. michael@0: Use copy_if_different in the CREATE_SYMLINK macro. michael@0: michael@0: Version 1.6.1beta09 [March 13, 2013] michael@0: Eliminated two warnings from the Intel C compiler. The warnings are michael@0: technically valid, although a reasonable treatment of division would michael@0: show it to be incorrect. michael@0: michael@0: Version 1.6.1rc01 [March 21, 2013] michael@0: No changes. michael@0: michael@0: Version 1.6.1 [March 28, 2013] michael@0: No changes. michael@0: michael@0: Version 1.6.2beta01 [April 14, 2013] michael@0: Updated documentation of 1.5.x to 1.6.x changes in iCCP chunk handling. michael@0: Fixed incorrect warning of excess deflate data. End condition - the michael@0: warning would be produced if the end of the deflate stream wasn't read michael@0: in the last row. The warning is harmless. michael@0: Corrected the test on user transform changes on read. It was in the michael@0: png_set of the transform function, but that doesn't matter unless the michael@0: transform function changes the rowbuf size, and that is only valid if michael@0: transform_info is called. michael@0: Corrected a misplaced closing bracket in contrib/libtests/pngvalid.c michael@0: (Flavio Medeiros). michael@0: Corrected length written to uncompressed iTXt chunks (Samuli Suominen). michael@0: Bug was introduced in libpng-1.6.0. michael@0: michael@0: Version 1.6.2rc01 [April 18, 2013] michael@0: Added contrib/tools/fixitxt.c, to repair the erroneous iTXt chunk length michael@0: written by libpng-1.6.0 and 1.6.1. michael@0: Disallow storing sRGB information when the sRGB is not supported. michael@0: michael@0: Version 1.6.2rc02 [April 18, 2013] michael@0: Merge pngtest.c with libpng-1.7.0 michael@0: michael@0: Version 1.6.2rc03 [April 22, 2013] michael@0: Trivial spelling cleanup. michael@0: michael@0: Version 1.6.2rc04 and 1.6.2rc05 [omitted] michael@0: michael@0: Version 1.6.2rc06 [April 24, 2013] michael@0: Reverted to version 1.6.2rc03. Recent changes to arm/neon support michael@0: have been ported to libpng-1.7.0beta09 and will reappear in version michael@0: 1.6.3beta01. michael@0: michael@0: Version 1.6.2 [April 25, 2013] michael@0: No changes. michael@0: michael@0: Version 1.6.3beta01 [April 25, 2013] michael@0: Revised stack marking in arm/filter_neon.S and configure.ac. michael@0: Ensure that NEON filter stuff is completely disabled when switched 'off'. michael@0: Previously the ARM NEON specific files were still built if the option michael@0: was switched 'off' as opposed to being explicitly disabled. michael@0: michael@0: Version 1.6.3beta02 [April 26, 2013] michael@0: Test for 'arm*' not just 'arm' in the host_cpu configure variable. michael@0: Rebuilt the configure scripts. michael@0: michael@0: Version 1.6.3beta03 [April 30, 2013] michael@0: Expanded manual paragraph about writing private chunks, particularly michael@0: the need to call png_set_keep_unknown_chunks() when writing them. michael@0: Avoid dereferencing NULL pointer possibly returned from michael@0: png_create_write_struct() (Andrew Church). michael@0: michael@0: Version 1.6.3beta05 [May 9, 2013] michael@0: Calculate our own zlib windowBits when decoding rather than trusting the michael@0: CMF bytes in the PNG datastream. michael@0: Added an option to force maximum window size for inflating, which was michael@0: the behavior of libpng15 and earlier. michael@0: Added png-fix-itxt and png-fix-too-far-back to the built programs and michael@0: removed warnings from the source code and timepng that are revealed as michael@0: a result. michael@0: Detect wrong libpng versions linked to png-fix-too-far-back, which currently michael@0: only works with libpng versions that can be made to reliably fail when michael@0: the deflate data contains an out-of-window reference. This means only michael@0: 1.6 and later. michael@0: Fixed gnu issues: g++ needs a static_cast, gcc 4.4.7 has a broken warning michael@0: message which it is easier to work round than ignore. michael@0: Updated contrib/pngminus/pnm2png.c (Paul Stewart): michael@0: Check for EOF michael@0: Ignore "#" delimited comments in input file to pnm2png.c. michael@0: Fixed whitespace handling michael@0: Added a call to png_set_packing() michael@0: Initialize dimension values so if sscanf fails at least we have known michael@0: invalid values. michael@0: Attempt to detect configuration issues with png-fix-too-far-back, which michael@0: requires both the correct libpng and the correct zlib to function michael@0: correctly. michael@0: Check ZLIB_VERNUM for mismatches, enclose #error in quotes michael@0: Added information in the documentation about problems with and fixes for michael@0: the bad CRC and bad iTXt chunk situations. michael@0: michael@0: Version 1.6.3beta06 [May 12, 2013] michael@0: Allow contrib/pngminus/pnm2png.c to compile without WRITE_INVERT and michael@0: WRITE_PACK supported (writes error message that it can't read P1 or michael@0: P4 PBM files). michael@0: Improved png-fix-too-far-back usage message, added --suffix option. michael@0: Revised contrib/pngminim/*/makefile to generate pnglibconf.h with the michael@0: right zlib header files. michael@0: Separated CPPFLAGS and CFLAGS in contrib/pngminim/*/makefile michael@0: michael@0: Version 1.6.3beta07 [June 8, 2013] michael@0: Removed a redundant test in png_set_IHDR(). michael@0: Added set(CMAKE_CONFIGURATION_TYPES ...) to CMakeLists.txt (Andrew Hundt) michael@0: Deleted set(CMAKE_BUILD_TYPE) block from CMakeLists.txt michael@0: Enclose the prototypes for the simplified write API in michael@0: #ifdef PNG_STDIO_SUPPORTED/#endif michael@0: Make ARM NEON support work at compile time (not just configure time). michael@0: This moves the test on __ARM_NEON__ into pngconf.h to avoid issues when michael@0: using a compiler that compiles for multiple architectures at one time. michael@0: Removed PNG_FILTER_OPTIMIZATIONS and PNG_ARM_NEON_SUPPORTED from michael@0: pnglibconf.h, allowing more of the decisions to be made internally michael@0: (pngpriv.h) during the compile. Without this, symbol prefixing is broken michael@0: under certain circumstances on ARM platforms. Now only the API parts of michael@0: the optimizations ('check' vs 'api') are exposed in the public header files michael@0: except that the new setting PNG_ARM_NEON_OPT documents how libpng makes the michael@0: decision about whether or not to use the optimizations. michael@0: Protect symbol prefixing against CC/CPPFLAGS/CFLAGS useage. michael@0: Previous iOS/Xcode fixes for the ARM NEON optimizations moved the test michael@0: on __ARM_NEON__ from configure time to compile time. This breaks symbol michael@0: prefixing because the definition of the special png_init_filter_functions michael@0: call was hidden at configure time if the relevant compiler arguments are michael@0: passed in CFLAGS as opposed to CC. This change attempts to avoid all michael@0: the confusion that would result by declaring the init function even when michael@0: it is not used, so that it will always get prefixed. michael@0: michael@0: Version 1.6.3beta08 [June 18, 2013] michael@0: Revised libpng.3 so that "doclifter" can process it. michael@0: michael@0: Version 1.6.3beta09 [June 27, 2013] michael@0: Revised example.c to illustrate use of PNG_DEFAULT_sRGB and PNG_GAMMA_MAC_18 michael@0: as parameters for png_set_gamma(). These have been available since michael@0: libpng-1.5.4. michael@0: Renamed contrib/tools/png-fix-too-far-back.c to pngfix.c and revised it michael@0: to check all compressed chunks known to libpng. michael@0: michael@0: Version 1.6.3beta10 [July 5, 2013] michael@0: Updated documentation to show default behavior of benign errors correctly. michael@0: Only compile ARM code when PNG_READ_SUPPORTED is defined. michael@0: Fixed undefined behavior in contrib/tools/pngfix.c and added new strip michael@0: option. pngfix relied on undefined behavior and even a simple change from michael@0: gcc to g++ caused it to fail. The new strip option 'unsafe' has been michael@0: implemented and is the default if --max is given. Option names have michael@0: been clarified, with --strip=transform now stripping the bKGD chunk, michael@0: which was stripped previously with --strip=unused. michael@0: Added all documented chunk types to pngpriv.h michael@0: Unified pngfix.c source with libpng17. michael@0: michael@0: Version 1.6.3rc01 [July 11, 2013] michael@0: No changes. michael@0: michael@0: Version 1.6.3 [July 18, 2013] michael@0: Revised manual about changes in iTXt chunk handling made in libpng-1.6.0. michael@0: Added "/* SAFE */" comments in pngrutil.c and pngrtran.c where warnings michael@0: may be erroneously issued by code-checking applications. michael@0: michael@0: Version 1.6.4beta01 [August 21, 2013] michael@0: Added information about png_set_options() to the manual. michael@0: Delay calling png_init_filter_functions() until a row with nonzero filter michael@0: is found. michael@0: michael@0: Version 1.6.4beta02 [August 30, 2013] michael@0: Fixed inconsistent conditional compilation of png_chunk_unknown_handling() michael@0: prototype, definition, and usage. Made it depend on michael@0: PNG_HANDLE_AS_UNKNOWN_SUPPORTED everywhere. michael@0: michael@0: Version 1.6.4rc01 [September 5, 2013] michael@0: No changes. michael@0: michael@0: Version 1.6.4 [September 12, 2013] michael@0: No changes. michael@0: michael@0: Version 1.6.5 [September 14, 2013] michael@0: Removed two stray lines of code from arm/arm_init.c. michael@0: michael@0: Version 1.6.6 [September 16, 2013] michael@0: Removed two stray lines of code from arm/arm_init.c, again. michael@0: michael@0: Version 1.6.7beta01 [September 30, 2013] michael@0: Revised unknown chunk code to correct several bugs in the NO_SAVE_/NO_WRITE michael@0: combination michael@0: Allow HANDLE_AS_UNKNOWN to work when other options are configured off. Also michael@0: fixed the pngminim makefiles to work when $(MAKEFLAGS) contains stuff michael@0: which terminates the make options (as by default in recent versions of michael@0: Gentoo). michael@0: Avoid up-cast warnings in pngvalid.c. On ARM the alignment requirements of michael@0: png_modifier are greater than that of png_store and as a consequence michael@0: compilation of pngvalid.c results in a warning about increased alignment michael@0: requirements because of the bare cast to (png_modifier*). The code is safe, michael@0: because the pointer is known to point to a stack allocated png_modifier, michael@0: but this change avoids the warning. michael@0: Fixed default behavior of ARM_NEON_API. If the ARM NEON API option was michael@0: compiled without the CHECK option it defaulted to on, not off. michael@0: Check user callback behavior in pngunknown.c. Previous versions compiled michael@0: if SAVE_UNKNOWN was not available but did nothing since the callback michael@0: was never implemented. michael@0: Merged pngunknown.c with 1.7 version and back ported 1.7 improvements/fixes michael@0: michael@0: Version 1.6.7beta02 [October 12, 2013] michael@0: Made changes for compatibility with automake 1.14: michael@0: 1) Added the 'compile' program to the list of programs that must be cleaned michael@0: in autogen.sh michael@0: 2) Added 'subdir-objects' which causes .c files in sub-directories to be michael@0: compiled such that the corresponding .o files are also in the michael@0: sub-directory. This is because automake 1.14 warns that the michael@0: current behavior of compiling to the top level directory may be removed michael@0: in the future. michael@0: 3) Updated dependencies on pnglibconf.h to match the new .o locations and michael@0: added all the files in contrib/libtests and contrib/tools that depend michael@0: on pnglibconf.h michael@0: 4) Added 'BUILD_SOURCES = pnglibconf.h'; this is the automake recommended michael@0: way of handling the dependencies of sources that are machine generated; michael@0: unfortunately it only works if the user does 'make all' or 'make check', michael@0: so the dependencies (3) are still required. michael@0: Cleaned up (char*) casts of zlib messages. The latest version of the Intel C michael@0: compiler complains about casting a string literal as (char*), so copied the michael@0: treatment of z_const from the library code into pngfix.c michael@0: Simplified error message code in pngunknown. The simplification has the michael@0: useful side effect of avoiding a bogus warning generated by the latest michael@0: version of the Intel C compiler (it objects to michael@0: condition ? string-literal : string-literal). michael@0: Make autogen.sh work with automake 1.13 as well as 1.14. Do this by always michael@0: removing the 1.14 'compile' script but never checking for it. michael@0: michael@0: Version 1.6.7beta03 [October 19, 2013] michael@0: Added ARMv8 support (James Yu ). Added file michael@0: arm/filter_neon_intrinsics.c; enable with -mfpu=neon. michael@0: Revised pngvalid to generate size images with as many filters as it can michael@0: manage, limited by the number of rows. michael@0: Cleaned up ARM NEON compilation handling. The tests are now in pngpriv.h michael@0: and detect the broken GCC compilers. michael@0: michael@0: Version 1.6.7beta04 [October 26, 2013] michael@0: Allow clang derived from older GCC versions to use ARM intrinsics. This michael@0: causes all clang builds that use -mfpu=neon to use the intrinsics code, michael@0: not the assembler code. This has only been tested on iOS 7. It may be michael@0: necessary to exclude some earlier clang versions but this seems unlikely. michael@0: Changed NEON implementation selection mechanism. This allows assembler michael@0: or intrinsics to be turned on at compile time during the build by defining michael@0: PNG_ARM_NEON_IMPLEMENTATION to the correct value (2 or 1). This macro michael@0: is undefined by default and the build type is selected in pngpriv.h. michael@0: michael@0: Version 1.6.7rc01 [November 2, 2013] michael@0: No changes. michael@0: michael@0: Version 1.6.7rc02 [November 7, 2013] michael@0: Fixed #include in filter_neon_intrinsics.c and ctype macros. The ctype char michael@0: checking macros take an unsigned char argument, not a signed char. michael@0: michael@0: Version 1.6.7 [November 14, 2013] michael@0: No changes. michael@0: michael@0: Version 1.6.8beta01 [November 24, 2013] michael@0: Moved prototype for png_handle_unknown() in pngpriv.h outside of michael@0: the #ifdef PNG_SET_UNKNOWN_CHUNKS_SUPPORTED/#endif block. michael@0: Added "-Wall" to CFLAGS in contrib/pngminim/*/makefile michael@0: Conditionally compile some unused functions reported by -Wall in michael@0: pngminim. michael@0: Fixed 'minimal' builds. Various obviously useful minimal configurations michael@0: don't build because of missing contrib/libtests test programs and michael@0: overly complex dependencies in scripts/pnglibconf.dfa. This change michael@0: adds contrib/conftest/*.dfa files that can be used in automatic build michael@0: scripts to ensure that these configurations continue to build. michael@0: Enabled WRITE_INVERT and WRITE_PACK in contrib/pngminim/encoder. michael@0: Fixed pngvalid 'fail' function declaration on the Intel C Compiler. michael@0: This reverts to the previous 'static' implementation and works round michael@0: the 'unused static function' warning by using PNG_UNUSED(). michael@0: michael@0: Version 1.6.8beta02 [November 30, 2013] michael@0: Removed or marked PNG_UNUSED some harmless "dead assignments" reported michael@0: by clang scan-build. michael@0: Changed tabs to 3 spaces in png_debug macros and changed '"%s"m' michael@0: to '"%s" m' to improve portability among compilers. michael@0: Changed png_free_default() to free() in pngtest.c michael@0: michael@0: Version 1.6.8rc01 [December 12, 2013] michael@0: Tidied up pngfix inits and fixed pngtest no-write builds. michael@0: michael@0: Version 1.6.8rc02 [December 14, 2013] michael@0: Handle zero-length PLTE chunk or NULL palette with png_error() michael@0: instead of png_chunk_report(), which by default issues a warning michael@0: rather than an error, leading to later reading from a NULL pointer michael@0: (png_ptr->palette) in png_do_expand_palette(). This is CVE-2013-6954 michael@0: and VU#650142. Libpng-1.6.1 through 1.6.7 are vulnerable. michael@0: Libpng-1.6.0 and earlier do not have this bug. michael@0: michael@0: Version 1.6.8 [December 19, 2013] michael@0: No changes. michael@0: michael@0: Version 1.6.9beta01 [December 26, 2013] michael@0: Bookkeeping: Moved functions around (no changes). Moved transform michael@0: function definitions before the place where they are called so that michael@0: they can be made static. Move the intrapixel functions and the michael@0: grayscale palette builder out of the png?tran.c files. The latter michael@0: isn't a transform function and is no longer used internally, and the michael@0: former MNG specific functions are better placed in pngread/pngwrite.c michael@0: Made transform implementation functions static. This makes the internal michael@0: functions called by png_do_{read|write}_transformations static. On an michael@0: x86-64 DLL build (Gentoo Linux) this reduces the size of the text michael@0: segment of the DLL by 1208 bytes, about 0.6%. It also simplifies michael@0: maintenance by removing the declarations from pngpriv.h and allowing michael@0: easier changes to the internal interfaces. michael@0: Rebuilt configure scripts with automake-1.14.1 and autoconf-2.69 michael@0: in the tar distributions. michael@0: michael@0: Version 1.6.9beta02 [January 1, 2014] michael@0: Added checks for libpng 1.5 to pngvalid.c. This supports the use of michael@0: this version of pngvalid in libpng 1.5 michael@0: Merged with pngvalid.c from libpng-1.7 changes to create a single michael@0: pngvalid.c michael@0: Removed #error macro from contrib/tools/pngfix.c (Thomas Klausner). michael@0: Merged pngrio.c, pngtrans.c, pngwio.c, and pngerror.c with libpng-1.7.0 michael@0: Merged libpng-1.7.0 changes to make no-interlace configurations work michael@0: with test programs. michael@0: Revised pngvalid.c to support libpng 1.5, which does not support the michael@0: PNG_MAXIMUM_INFLATE_WINDOW option, so #define it out when appropriate in michael@0: pngvalid.c michael@0: Allow unversioned links created on install to be disabled in configure. michael@0: In configure builds 'make install' changes/adds links like png.h michael@0: and libpng.a to point to the newly installed, versioned, files (e.g. michael@0: libpng17/png.h and libpng17.a). Three new configure options and some michael@0: rearrangement of Makefile.am allow creation of these links to be disabled. michael@0: michael@0: Version 1.6.9beta03 [January 10, 2014] michael@0: Removed potentially misleading warning from png_check_IHDR(). michael@0: michael@0: Version 1.6.9beta04 [January 20, 2014] michael@0: Updated scripts/makefile.* to use CPPFLAGS (Cosmin). michael@0: Added clang attribute support (Cosmin). michael@0: michael@0: Version 1.6.9rc01 [January 28, 2014] michael@0: No changes. michael@0: michael@0: Version 1.6.9rc02 [January 30, 2014] michael@0: Quiet an uninitialized memory warning from VC2013 in png_get_png(). michael@0: michael@0: Version 1.6.9 [February 6, 2014] michael@0: michael@0: Version 1.6.10beta01 [February 9, 2014] michael@0: Backported changes from libpng-1.7.0beta30 and beta31: michael@0: Fixed a large number of instances where PNGCBAPI was omitted from michael@0: function definitions. michael@0: Added pngimage test program for png_read_png() and png_write_png() michael@0: with two new test scripts. michael@0: Removed dependence on !PNG_READ_EXPAND_SUPPORTED for calling michael@0: png_set_packing() in png_read_png(). michael@0: Fixed combination of ~alpha with shift. On read invert alpha, processing michael@0: occurred after shift processing, which causes the final values to be michael@0: outside the range that should be produced by the shift. Reversing the michael@0: order on read makes the two transforms work together correctly and mirrors michael@0: the order used on write. michael@0: Do not read invalid sBIT chunks. Previously libpng only checked sBIT michael@0: values on write, so a malicious PNG writer could therefore cause michael@0: the read code to return an invalid sBIT chunk, which might lead to michael@0: application errors or crashes. Such chunks are now skipped (with michael@0: chunk_benign_error). michael@0: Make png_read_png() and png_write_png() prototypes in png.h depend michael@0: upon PNG_READ_SUPPORTED and PNG_WRITE_SUPPORTED. michael@0: Support builds with unsupported PNG_TRANSFORM_* values. All of the michael@0: PNG_TRANSFORM_* values are always defined in png.h and, because they michael@0: are used for both read and write in some cases, it is not reliable michael@0: to #if out ones that are totally unsupported. This change adds error michael@0: detection in png_read_image() and png_write_image() to do a michael@0: png_app_error() if the app requests something that cannot be done michael@0: and it adds corresponding code to pngimage.c to handle such options michael@0: by not attempting to test them. michael@0: michael@0: Version 1.6.10beta02 [February 23, 2014] michael@0: Moved redefines of png_error(), png_warning(), png_chunk_error(), michael@0: and png_chunk_warning() from pngpriv.h to png.h to make them visible michael@0: to libpng-calling applications. michael@0: Moved OS dependent code from arm/arm_init.c, to allow the included michael@0: implementation of the ARM NEON discovery function to be set at michael@0: build-time and provide sample implementations from the current code in the michael@0: contrib/arm-neon subdirectory. The __linux__ code has also been changed to michael@0: compile and link on Android by using /proc/cpuinfo, and the old linux code michael@0: is in contrib/arm-neon/linux-auxv.c. The new code avoids POSIX and Linux michael@0: dependencies apart from opening /proc/cpuinfo and is C90 compliant. michael@0: Check for info_ptr == NULL early in png_read_end() so we don't need to michael@0: run all the png_handle_*() and depend on them to return if info_ptr == NULL. michael@0: This improves the performance of png_read_end(png_ptr, NULL) and makes michael@0: it more robust against future programming errors. michael@0: Check for __has_extension before using it in pngconf.h, to michael@0: support older Clang versions (Jeremy Sequoia). michael@0: Treat CRC error handling with png_set_crc_action(), instead of with michael@0: png_set_benign_errors(), which has been the case since libpng-1.6.0beta18. michael@0: Use a user warning handler in contrib/gregbook/readpng2.c instead of default, michael@0: so warnings will be put on stderr even if libpng has CONSOLE_IO disabled. michael@0: Added png_ptr->process_mode = PNG_READ_IDAT_MODE in png_push_read_chunk michael@0: after recognizing the IDAT chunk, which avoids an infinite loop while michael@0: reading a datastream whose first IDAT chunk is of zero-length. michael@0: This fixes CERT VU#684412 and CVE-2014-0333. michael@0: Don't recognize known sRGB profiles as sRGB if they have been hacked, michael@0: but don't reject them and don't issue a copyright violation warning. michael@0: michael@0: Version 1.6.10beta03 [February 25, 2014] michael@0: Moved some documentation from png.h to libpng.3 and libpng-manual.txt michael@0: Minor editing of contrib/arm-neon/README and contrib/examples/*.c michael@0: michael@0: Version 1.6.10rc01 [February 27, 2014] michael@0: Fixed typos in the manual and in scripts/pnglibconf.dfa (CFLAGS -> CPPFLAGS michael@0: and PNG_USR_CONFIG -> PNG_USER_CONFIG). michael@0: michael@0: Version 1.6.10rc02 [February 28, 2014] michael@0: Removed unreachable return statement after png_chunk_error() michael@0: in pngrutil.c michael@0: michael@0: Version 1.6.10rc03 [March 4, 2014] michael@0: Un-deprecated png_data_freer(). michael@0: michael@0: Version 1.6.10 [March 6, 2014] michael@0: michael@0: Send comments/corrections/commendations to png-mng-implement at lists.sf.net michael@0: (subscription required; visit michael@0: https://lists.sourceforge.net/lists/listinfo/png-mng-implement michael@0: to subscribe) michael@0: or to glennrp at users.sourceforge.net michael@0: michael@0: Glenn R-P michael@0: #endif