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;