diff --git a/ChangeLog b/ChangeLog index 8137cf60..4f7f1f1d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -3,6 +3,7 @@ 23/4/17 started 8.5.5 - doc polishing +- more improvements for tuncated PNG files, thanks juyunsang 23/4/17 started 8.5.4 - don't depend on image width when setting n_lines, thanks kleisauke diff --git a/autogen.sh b/autogen.sh index 208a1bf2..9055e1c1 100755 --- a/autogen.sh +++ b/autogen.sh @@ -16,7 +16,7 @@ rm -f m4/gtk-doc.m4 rm -f config.* configure depcomp rm -f install-sh intltool-* libtool ltmain.sh missing mkinstalldirs -rm -f stamp-* vipsCC-7.19.pc vips-7.19.spec vips-7.19.pc +rm -f stamp-* rm -f swig/vipsCC/*.cxx rm -f swig/vipsCC/VImage.h rm -f swig/vipsCC/VImage.py python/vipsCC/VError.py python/vipsCC/VMask.py python/vipsCC/Display.py diff --git a/doc/libvips-docs.xml.in b/doc/libvips-docs.xml.in index a6ac93e8..4bd2a812 100644 --- a/doc/libvips-docs.xml.in +++ b/doc/libvips-docs.xml.in @@ -45,6 +45,7 @@ + diff --git a/libvips/foreign/vipspng.c b/libvips/foreign/vipspng.c index df3716bc..df076ff3 100644 --- a/libvips/foreign/vipspng.c +++ b/libvips/foreign/vipspng.c @@ -63,6 +63,8 @@ * - use dbuf for buffer output * 30/3/17 * - better behaviour for truncated png files, thanks Yury + * 26/4/17 + * - better @fail handling with truncated PNGs */ /* @@ -127,8 +129,8 @@ user_error_function( png_structp png_ptr, png_const_charp error_msg ) /* This function must not return or the default error handler will be * invoked. - longjmp( png_jmpbuf( png_ptr ), -1 ); */ + longjmp( png_jmpbuf( png_ptr ), -1 ); } static void @@ -409,7 +411,7 @@ png2vips_header( Read *read, VipsImage *out ) void *profile_copy; #ifdef DEBUG - printf( "png2vips_header: attaching %zd bytes of ICC profile\n", + printf( "png2vips_header: attaching %d bytes of ICC profile\n", proflen ); printf( "png2vips_header: name = \"%s\"\n", name ); #endif /*DEBUG*/ @@ -538,6 +540,11 @@ png2vips_generate( VipsRegion *or, printf( "png2vips_generate: thread %p\n", g_thread_self() ); #endif /*DEBUG*/ + + /* ... except if fail is on, in which case we bail out. + */ + if( read->fail ) + return( -1 ); } read->y_pos += 1;