[libpng16] Merged libpng-1.7.0 changes to make no-interlace configurations work

with test programs.
This commit is contained in:
John Bowler 2013-12-29 10:50:51 -06:00 committed by Glenn Randers-Pehrson
parent 88ecac68be
commit a8472470a4
5 changed files with 135 additions and 59 deletions

View File

@ -1,5 +1,5 @@
Libpng 1.6.9beta02 - December 28, 2013 Libpng 1.6.9beta02 - December 29, 2013
This is not intended to be a public release. It will be replaced This is not intended to be a public release. It will be replaced
within a few weeks by a public version or by another test version. within a few weeks by a public version or by another test version.
@ -42,13 +42,15 @@ Version 1.6.9beta01 [December 26, 2013]
Rebuilt configure scripts with automake-1.14.1 and autoconf-2.69 Rebuilt configure scripts with automake-1.14.1 and autoconf-2.69
in the tar distributions. in the tar distributions.
Version 1.6.9beta02 [December 28, 2013] Version 1.6.9beta02 [December 29, 2013]
Added checks for libpng 1.5 to pngvalid.c. This supports the use of Added checks for libpng 1.5 to pngvalid.c. This supports the use of
this version of pngvalid in libpng 1.5 this version of pngvalid in libpng 1.5
Merged with pngvalid.c from libpng-1.7 changes to create a single Merged with pngvalid.c from libpng-1.7 changes to create a single
pngvalid.c pngvalid.c
Removed #error macro from contrib/tools/pngfix.c (Thomas Klausner). Removed #error macro from contrib/tools/pngfix.c (Thomas Klausner).
Merged pngrio.c, pngtrans.c, pngwio.c, and pngerror.c with libpng-1.7.0 Merged pngrio.c, pngtrans.c, pngwio.c, and pngerror.c with libpng-1.7.0
Merged libpng-1.7.0 changes to make no-interlace configurations work
with test programs.
Send comments/corrections/commendations to png-mng-implement at lists.sf.net Send comments/corrections/commendations to png-mng-implement at lists.sf.net
(subscription required; visit (subscription required; visit

View File

@ -4767,13 +4767,15 @@ Version 1.6.9beta01 [December 26, 2013]
Rebuilt configure scripts with automake-1.14.1 and autoconf-2.69 Rebuilt configure scripts with automake-1.14.1 and autoconf-2.69
in the tar distributions. in the tar distributions.
Version 1.6.9beta02 [December 28, 2013] Version 1.6.9beta02 [December 29, 2013]
Added checks for libpng 1.5 to pngvalid.c. This supports the use of Added checks for libpng 1.5 to pngvalid.c. This supports the use of
this version of pngvalid in libpng 1.5 this version of pngvalid in libpng 1.5
Merged with pngvalid.c from libpng-1.7 changes to create a single Merged with pngvalid.c from libpng-1.7 changes to create a single
pngvalid.c pngvalid.c
Removed #error macro from contrib/tools/pngfix.c (Thomas Klausner). Removed #error macro from contrib/tools/pngfix.c (Thomas Klausner).
Merged pngrio.c, pngtrans.c, pngwio.c, and pngerror.c with libpng-1.7.0 Merged pngrio.c, pngtrans.c, pngwio.c, and pngerror.c with libpng-1.7.0
Merged libpng-1.7.0 changes to make no-interlace configurations work
with test programs.
Send comments/corrections/commendations to png-mng-implement at lists.sf.net Send comments/corrections/commendations to png-mng-implement at lists.sf.net
(subscription required; visit (subscription required; visit

View File

@ -1,7 +1,7 @@
/* pngvalid.c - validate libpng by constructing then reading png files. /* pngvalid.c - validate libpng by constructing then reading png files.
* *
* Last changed in libpng 1.6.9 [(PENDING RELEASE)] * Last changed in libpng 1.5.18 [(PENDING RELEASE)]
* Copyright (c) 2013 Glenn Randers-Pehrson * Copyright (c) 2013 Glenn Randers-Pehrson
* Written by John Cunningham Bowler * Written by John Cunningham Bowler
* *
@ -49,6 +49,15 @@
# include <zlib.h> /* For crc32 */ # include <zlib.h> /* For crc32 */
#endif #endif
/* 1.6.1 added support for the configure test harness, which uses 77 to indicate
* a skipped test, in earlier versions we need to succeed on a skipped test, so:
*/
#if PNG_LIBPNG_VER < 10601
# define SKIP 0
#else
# define SKIP 77
#endif
/* pngvalid requires write support and one of the fixed or floating point APIs. /* pngvalid requires write support and one of the fixed or floating point APIs.
*/ */
#if defined(PNG_WRITE_SUPPORTED) &&\ #if defined(PNG_WRITE_SUPPORTED) &&\
@ -3401,10 +3410,28 @@ transform_row(png_const_structp pp, png_byte buffer[TRANSFORM_ROWMAX],
#define DEPTH(bd) ((png_byte)(1U << (bd))) #define DEPTH(bd) ((png_byte)(1U << (bd)))
/* This is just a helper for compiling on minimal systems with no write /* This is just a helper for compiling on minimal systems with no write
* interlacing support. * interlacing support. If there is no write interlacing we can't generate test
* cases with interlace:
*/ */
#ifndef PNG_WRITE_INTERLACING_SUPPORTED #ifdef PNG_WRITE_INTERLACING_SUPPORTED
# define INTERLACE_LAST PNG_INTERLACE_LAST
# define check_interlace_type(type) ((void)(type))
#else
# define INTERLACE_LAST (PNG_INTERLACE_NONE+1)
# define png_set_interlace_handling(a) (1) # define png_set_interlace_handling(a) (1)
static void
check_interlace_type(int PNG_CONST interlace_type)
{
if (interlace_type != PNG_INTERLACE_NONE)
{
/* This is an internal error - --interlace tests should be skipped, not
* attempted.
*/
fprintf(stderr, "pngvalid: no interlace support\n");
exit(99);
}
}
#endif #endif
/* Make a standardized image given a an image colour type, bit depth and /* Make a standardized image given a an image colour type, bit depth and
@ -3420,6 +3447,8 @@ make_transform_image(png_store* PNG_CONST ps, png_byte PNG_CONST colour_type,
{ {
context(ps, fault); context(ps, fault);
check_interlace_type(interlace_type);
Try Try
{ {
png_infop pi; png_infop pi;
@ -3560,12 +3589,8 @@ make_transform_images(png_store *ps)
{ {
int interlace_type; int interlace_type;
# ifdef PNG_WRITE_INTERLACING_SUPPORTED for (interlace_type = PNG_INTERLACE_NONE;
for (interlace_type = PNG_INTERLACE_NONE; interlace_type < INTERLACE_LAST; ++interlace_type)
interlace_type < PNG_INTERLACE_LAST; ++interlace_type)
# else
interlace_type = PNG_INTERLACE_NONE;
# endif
{ {
char name[FILE_NAME_SIZE]; char name[FILE_NAME_SIZE];
@ -3655,6 +3680,12 @@ make_size_image(png_store* PNG_CONST ps, png_byte PNG_CONST colour_type,
{ {
context(ps, fault); context(ps, fault);
/* At present libpng does not support the write of an interlaced image unless
* PNG_WRITE_INTERLACING_SUPPORTED, even with do_interlace so the code here
* does the pixel interlace itself, so:
*/
check_interlace_type(interlace_type);
Try Try
{ {
png_infop pi; png_infop pi;
@ -3864,13 +3895,6 @@ make_size(png_store* PNG_CONST ps, png_byte PNG_CONST colour_type, int bdlo,
# ifdef PNG_WRITE_INTERLACING_SUPPORTED # ifdef PNG_WRITE_INTERLACING_SUPPORTED
make_size_image(ps, colour_type, DEPTH(bdlo), PNG_INTERLACE_ADAM7, make_size_image(ps, colour_type, DEPTH(bdlo), PNG_INTERLACE_ADAM7,
width, height, 0); width, height, 0);
# endif
# if defined(PNG_WRITE_INTERLACING_SUPPORTED) || PNG_LIBPNG_VER > 10518
/* This fails in 1.5.8 with a zlib stream error writing the rows of
* the internally generated interlaced images, but only when the
* read code is disabled: to be investigated. Probably an erroneous
* #define out of the zlib deflate reset.
*/
make_size_image(ps, colour_type, DEPTH(bdlo), PNG_INTERLACE_ADAM7, make_size_image(ps, colour_type, DEPTH(bdlo), PNG_INTERLACE_ADAM7,
width, height, 1); width, height, 1);
# endif # endif
@ -3964,6 +3988,8 @@ make_error(png_store* volatile psIn, png_byte PNG_CONST colour_type,
context(ps, fault); context(ps, fault);
check_interlace_type(interlace_type);
Try Try
{ {
png_structp pp; png_structp pp;
@ -4066,12 +4092,8 @@ make_errors(png_modifier* PNG_CONST pm, png_byte PNG_CONST colour_type,
{ {
int interlace_type; int interlace_type;
# ifdef PNG_WRITE_INTERLACING_SUPPORTED for (interlace_type = PNG_INTERLACE_NONE;
for (interlace_type = PNG_INTERLACE_NONE; interlace_type < INTERLACE_LAST; ++interlace_type)
interlace_type < PNG_INTERLACE_LAST; ++interlace_type)
# else
interlace_type = PNG_INTERLACE_NONE;
# endif
{ {
unsigned int test; unsigned int test;
char name[FILE_NAME_SIZE]; char name[FILE_NAME_SIZE];
@ -4269,6 +4291,7 @@ standard_display_init(standard_display *dp, png_store* ps, png_uint_32 id,
dp->red_sBIT = dp->blue_sBIT = dp->green_sBIT = dp->alpha_sBIT = dp->red_sBIT = dp->blue_sBIT = dp->green_sBIT = dp->alpha_sBIT =
dp->bit_depth; dp->bit_depth;
dp->interlace_type = INTERLACE_FROM_ID(id); dp->interlace_type = INTERLACE_FROM_ID(id);
check_interlace_type(dp->interlace_type);
dp->id = id; dp->id = id;
/* All the rest are filled in after the read_info: */ /* All the rest are filled in after the read_info: */
dp->w = 0; dp->w = 0;
@ -4887,7 +4910,7 @@ standard_text_validate(standard_display *dp, png_const_structp pp,
{ {
standard_check_text(pp, tp, "image name", dp->ps->current->name); standard_check_text(pp, tp, "image name", dp->ps->current->name);
/* This exists because prior to 1.6 the progressive reader left the /* This exists because prior to 1.5.18 the progressive reader left the
* png_struct z_stream unreset at the end of the image, so subsequent * png_struct z_stream unreset at the end of the image, so subsequent
* attempts to use it simply returns Z_STREAM_END. * attempts to use it simply returns Z_STREAM_END.
*/ */
@ -4996,7 +5019,7 @@ standard_end(png_structp ppIn, png_infop pi)
* interlaced images. * interlaced images.
*/ */
standard_text_validate(dp, pp, pi, standard_text_validate(dp, pp, pi,
PNG_LIBPNG_VER >= 10600/*check_end: see comments above*/); PNG_LIBPNG_VER >= 10518/*check_end: see comments above*/);
standard_image_validate(dp, pp, 0, -1); standard_image_validate(dp, pp, 0, -1);
} }
@ -5098,7 +5121,7 @@ test_standard(png_modifier* PNG_CONST pm, png_byte PNG_CONST colour_type,
int interlace_type; int interlace_type;
for (interlace_type = PNG_INTERLACE_NONE; for (interlace_type = PNG_INTERLACE_NONE;
interlace_type < PNG_INTERLACE_LAST; ++interlace_type) interlace_type < INTERLACE_LAST; ++interlace_type)
{ {
standard_test(&pm->this, FILEID(colour_type, DEPTH(bdlo), 0/*palette*/, standard_test(&pm->this, FILEID(colour_type, DEPTH(bdlo), 0/*palette*/,
interlace_type, 0, 0, 0), 0/*do_interlace*/, pm->use_update_info); interlace_type, 0, 0, 0), 0/*do_interlace*/, pm->use_update_info);
@ -5173,6 +5196,7 @@ test_size(png_modifier* PNG_CONST pm, png_byte PNG_CONST colour_type,
if (fail(pm)) if (fail(pm))
return 0; return 0;
# ifdef PNG_WRITE_INTERLACING_SUPPORTED
standard_test(&pm->this, FILEID(colour_type, DEPTH(bdlo), 0/*palette*/, standard_test(&pm->this, FILEID(colour_type, DEPTH(bdlo), 0/*palette*/,
PNG_INTERLACE_ADAM7, w, h, 0), 0/*do_interlace*/, PNG_INTERLACE_ADAM7, w, h, 0), 0/*do_interlace*/,
pm->use_update_info); pm->use_update_info);
@ -5186,6 +5210,7 @@ test_size(png_modifier* PNG_CONST pm, png_byte PNG_CONST colour_type,
if (fail(pm)) if (fail(pm))
return 0; return 0;
# endif
/* Now validate the interlaced read side - do_interlace true, /* Now validate the interlaced read side - do_interlace true,
* in the progressive case this does actually make a difference * in the progressive case this does actually make a difference
@ -5198,12 +5223,14 @@ test_size(png_modifier* PNG_CONST pm, png_byte PNG_CONST colour_type,
if (fail(pm)) if (fail(pm))
return 0; return 0;
# ifdef PNG_WRITE_INTERLACING_SUPPORTED
standard_test(&pm->this, FILEID(colour_type, DEPTH(bdlo), 0/*palette*/, standard_test(&pm->this, FILEID(colour_type, DEPTH(bdlo), 0/*palette*/,
PNG_INTERLACE_ADAM7, w, h, 0), 1/*do_interlace*/, PNG_INTERLACE_ADAM7, w, h, 0), 1/*do_interlace*/,
pm->use_update_info); pm->use_update_info);
if (fail(pm)) if (fail(pm))
return 0; return 0;
# endif
} }
} }
@ -9251,6 +9278,28 @@ static void gamma_composition_test(png_modifier *pm,
r = random_32(); r = random_32();
background.blue = (png_uint_16)r; background.blue = (png_uint_16)r;
background.gray = (png_uint_16)(r >> 16); background.gray = (png_uint_16)(r >> 16);
/* In earlier libpng versions, those where DIGITIZE is set, any background
* gamma correction in the expand16 case was done using 8-bit gamma
* correction tables, resulting in larger errors. To cope with those
* cases use a 16-bit background value which will handle this gamma
* correction.
*/
# if DIGITIZE
if (expand_16 && (do_background == PNG_BACKGROUND_GAMMA_UNIQUE ||
do_background == PNG_BACKGROUND_GAMMA_FILE) &&
fabs(bg*screen_gamma-1) > PNG_GAMMA_THRESHOLD)
{
/* The background values will be looked up in an 8-bit table to do
* the gamma correction, so only select values which are an exact
* match for the 8-bit table entries:
*/
background.red = (png_uint_16)((background.red >> 8) * 257);
background.green = (png_uint_16)((background.green >> 8) * 257);
background.blue = (png_uint_16)((background.blue >> 8) * 257);
background.gray = (png_uint_16)((background.gray >> 8) * 257);
}
# endif
} }
else /* 8 bit colors */ else /* 8 bit colors */
@ -10222,7 +10271,14 @@ int main(int argc, char **argv)
++pm.use_update_info; /* Can call multiple times */ ++pm.use_update_info; /* Can call multiple times */
else if (strcmp(*argv, "--interlace") == 0) else if (strcmp(*argv, "--interlace") == 0)
pm.interlace_type = PNG_INTERLACE_ADAM7; {
# ifdef PNG_WRITE_INTERLACING_SUPPORTED
pm.interlace_type = PNG_INTERLACE_ADAM7;
# else
fprintf(stderr, "pngvalid: no write interlace support\n");
return SKIP;
# endif
}
else if (strcmp(*argv, "--use-input-precision") == 0) else if (strcmp(*argv, "--use-input-precision") == 0)
pm.use_input_precision = 1U; pm.use_input_precision = 1U;
@ -10521,11 +10577,6 @@ int main(void)
fprintf(stderr, fprintf(stderr,
"pngvalid: no low level write support in libpng, all tests skipped\n"); "pngvalid: no low level write support in libpng, all tests skipped\n");
/* So the test is skipped: */ /* So the test is skipped: */
#if PNG_LIBPNG_VER < 10601 return SKIP;
/* Test harness support was only added in libpng 1.6.1: */
return 0;
#else
return 77;
#endif
} }
#endif #endif

View File

@ -1,7 +1,7 @@
/* pngtest.c - a simple test program to test libpng /* pngtest.c - a simple test program to test libpng
* *
* Last changed in libpng 1.6.8 [December 19, 2013] * Last changed in libpng 1.6.9 [(PENDING RELEASE)]
* Copyright (c) 1998-2013 Glenn Randers-Pehrson * Copyright (c) 1998-2013 Glenn Randers-Pehrson
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
* (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
@ -45,6 +45,11 @@
/* Known chunks that exist in pngtest.png must be supported or pngtest will fail /* Known chunks that exist in pngtest.png must be supported or pngtest will fail
* simply as a result of re-ordering them. This may be fixed in 1.7 * simply as a result of re-ordering them. This may be fixed in 1.7
*
* pngtest allocates a single row buffer for each row and overwrites it,
* therefore if the write side doesn't support the writing of interlaced images
* nothing can be done for an interlaced image (and the code below will fail
* horribly trying to write extra data after writing garbage).
*/ */
#if defined PNG_READ_SUPPORTED && /* else nothing can be done */\ #if defined PNG_READ_SUPPORTED && /* else nothing can be done */\
defined PNG_READ_bKGD_SUPPORTED &&\ defined PNG_READ_bKGD_SUPPORTED &&\
@ -58,9 +63,15 @@
defined PNG_READ_sRGB_SUPPORTED &&\ defined PNG_READ_sRGB_SUPPORTED &&\
defined PNG_READ_tEXt_SUPPORTED &&\ defined PNG_READ_tEXt_SUPPORTED &&\
defined PNG_READ_tIME_SUPPORTED &&\ defined PNG_READ_tIME_SUPPORTED &&\
defined PNG_READ_zTXt_SUPPORTED defined PNG_READ_zTXt_SUPPORTED &&\
defined PNG_WRITE_INTERLACING_SUPPORTED
#ifdef PNG_ZLIB_HEADER
# include PNG_ZLIB_HEADER /* defined by pnglibconf.h from 1.7 */
#else
# include "zlib.h"
#endif
#include "zlib.h"
/* Copied from pngpriv.h but only used in error messages below. */ /* Copied from pngpriv.h but only used in error messages below. */
#ifndef PNG_ZBUF_SIZE #ifndef PNG_ZBUF_SIZE
# define PNG_ZBUF_SIZE 8192 # define PNG_ZBUF_SIZE 8192
@ -116,10 +127,6 @@ static int unsupported_chunks = 0; /* chunk unsupported by libpng in input */
static int error_count = 0; /* count calls to png_error */ static int error_count = 0; /* count calls to png_error */
static int warning_count = 0; /* count calls to png_warning */ static int warning_count = 0; /* count calls to png_warning */
#ifdef __TURBOC__
#include <mem.h>
#endif
/* Define png_jmpbuf() in case we are using a pre-1.0.6 version of libpng */ /* Define png_jmpbuf() in case we are using a pre-1.0.6 version of libpng */
#ifndef png_jmpbuf #ifndef png_jmpbuf
# define png_jmpbuf(png_ptr) png_ptr->jmpbuf # define png_jmpbuf(png_ptr) png_ptr->jmpbuf
@ -725,18 +732,18 @@ static int PNGCBAPI read_user_chunk_callback(png_struct *png_ptr,
static void static void
write_sTER_chunk(png_structp write_ptr) write_sTER_chunk(png_structp write_ptr)
{ {
png_byte png_sTER[5] = {115, 84, 69, 82, '\0'}; png_byte sTER[5] = {115, 84, 69, 82, '\0'};
if (verbose) if (verbose)
fprintf(STDERR, "\n stereo mode = %d\n", user_chunk_data.sTER_mode); fprintf(STDERR, "\n stereo mode = %d\n", user_chunk_data.sTER_mode);
png_write_chunk(write_ptr, png_sTER, &user_chunk_data.sTER_mode, 1); png_write_chunk(write_ptr, sTER, &user_chunk_data.sTER_mode, 1);
} }
static void static void
write_vpAg_chunk(png_structp write_ptr) write_vpAg_chunk(png_structp write_ptr)
{ {
png_byte png_vpAg[5] = {118, 112, 65, 103, '\0'}; png_byte vpAg[5] = {118, 112, 65, 103, '\0'};
png_byte vpag_chunk_data[9]; png_byte vpag_chunk_data[9];
@ -749,7 +756,7 @@ write_vpAg_chunk(png_structp write_ptr)
png_save_uint_32(vpag_chunk_data, user_chunk_data.vpAg_width); png_save_uint_32(vpag_chunk_data, user_chunk_data.vpAg_width);
png_save_uint_32(vpag_chunk_data + 4, user_chunk_data.vpAg_height); png_save_uint_32(vpag_chunk_data + 4, user_chunk_data.vpAg_height);
vpag_chunk_data[8] = user_chunk_data.vpAg_units; vpag_chunk_data[8] = user_chunk_data.vpAg_units;
png_write_chunk(write_ptr, png_vpAg, vpag_chunk_data, 9); png_write_chunk(write_ptr, vpAg, vpag_chunk_data, 9);
} }
static void static void
@ -830,6 +837,7 @@ test_one_file(PNG_CONST char *inname, PNG_CONST char *outname)
png_structp write_ptr; png_structp write_ptr;
png_infop write_info_ptr; png_infop write_info_ptr;
png_infop write_end_info_ptr; png_infop write_end_info_ptr;
int interlace_preserved = 1;
#else #else
png_structp write_ptr = NULL; png_structp write_ptr = NULL;
png_infop write_info_ptr = NULL; png_infop write_info_ptr = NULL;
@ -838,7 +846,7 @@ test_one_file(PNG_CONST char *inname, PNG_CONST char *outname)
png_bytep row_buf; png_bytep row_buf;
png_uint_32 y; png_uint_32 y;
png_uint_32 width, height; png_uint_32 width, height;
int num_pass, pass; int num_pass = 1, pass;
int bit_depth, color_type; int bit_depth, color_type;
row_buf = NULL; row_buf = NULL;
@ -1044,10 +1052,26 @@ test_one_file(PNG_CONST char *inname, PNG_CONST char *outname)
&color_type, &interlace_type, &compression_type, &filter_type)) &color_type, &interlace_type, &compression_type, &filter_type))
{ {
png_set_IHDR(write_ptr, write_info_ptr, width, height, bit_depth, png_set_IHDR(write_ptr, write_info_ptr, width, height, bit_depth,
#ifdef PNG_WRITE_INTERLACING_SUPPORTED
color_type, interlace_type, compression_type, filter_type); color_type, interlace_type, compression_type, filter_type);
#else #ifndef PNG_READ_INTERLACING_SUPPORTED
color_type, PNG_INTERLACE_NONE, compression_type, filter_type); /* num_pass will not be set below, set it here if the image is
* interlaced: what happens is that write interlacing is *not* turned
* on an the partial interlaced rows are written directly.
*/
switch (interlace_type)
{
case PNG_INTERLACE_NONE:
num_pass = 1;
break;
case PNG_INTERLACE_ADAM7:
num_pass = 7;
break;
default:
png_error(read_ptr, "invalid interlace type");
/*NOT REACHED*/
}
#endif #endif
} }
} }
@ -1340,14 +1364,10 @@ test_one_file(PNG_CONST char *inname, PNG_CONST char *outname)
#endif /* SINGLE_ROWBUF_ALLOC */ #endif /* SINGLE_ROWBUF_ALLOC */
pngtest_debug("Writing row data"); pngtest_debug("Writing row data");
#if defined(PNG_READ_INTERLACING_SUPPORTED) || \ #ifdef PNG_READ_INTERLACING_SUPPORTED
defined(PNG_WRITE_INTERLACING_SUPPORTED)
num_pass = png_set_interlace_handling(read_ptr); num_pass = png_set_interlace_handling(read_ptr);
# ifdef PNG_WRITE_SUPPORTED if (png_set_interlace_handling(write_ptr) != num_pass)
png_set_interlace_handling(write_ptr); png_error(write_ptr, "png_set_interlace_handling: inconsistent num_pass");
# endif
#else
num_pass = 1;
#endif #endif
#ifdef PNGTEST_TIMING #ifdef PNGTEST_TIMING
@ -1579,6 +1599,7 @@ test_one_file(PNG_CONST char *inname, PNG_CONST char *outname)
} }
#ifdef PNG_WRITE_SUPPORTED /* else nothing was written */ #ifdef PNG_WRITE_SUPPORTED /* else nothing was written */
if (interlace_preserved) /* else the files will be changed */
{ {
for (;;) for (;;)
{ {
@ -1965,7 +1986,7 @@ main(void)
fprintf(STDERR, fprintf(STDERR,
" test ignored because libpng was not built with read support\n"); " test ignored because libpng was not built with read support\n");
/* And skip this test */ /* And skip this test */
return 77; return PNG_LIBPNG_VER < 10600 ? 0 : 77;
} }
#endif #endif

View File

@ -1,2 +1,2 @@
#!/bin/sh #!/bin/sh
exec ./pngvalid --standard --interlace exec ./pngvalid --standard --progressive-read