diff -r -u iscan-2.28.1.orig/lib/pngstream.cc iscan-2.28.1/lib/pngstream.cc --- iscan-2.28.1.orig/lib/pngstream.cc 2012-07-05 10:41:18.919366301 -0500 +++ iscan-2.28.1/lib/pngstream.cc 2012-07-05 11:01:29.745168625 -0500 @@ -83,7 +83,12 @@ #if HAVE_PNG_H set_error_handler (_png, _info); +/* when not interlacing (ie, only one pass), number of rows is image height: _v_sz */ +#if PNG_LIBPNG_VER > 10499 + if (_header && !_footer && _v_sz == lib->get_current_row_number(_png)) +#else if (_header && !_footer && _png->num_rows == _png->flush_rows) +#endif { lib->write_end (_png, _info); _footer = true; @@ -167,6 +172,9 @@ funcsym (write_row); funcsym (write_flush); funcsym (write_end); +#if PNG_LIBPNG_VER > 10499 + funcsym (get_current_row_number); +#endif if (lib->access_version_number && lib->create_write_struct @@ -176,6 +184,9 @@ && lib->set_IHDR && lib->set_pHYs && lib->set_invert_mono +#if PNG_LIBPNG_VER > 10499 + && lib->get_current_row_number +#endif && lib->write_info && lib->write_row && lib->write_flush diff -r -u iscan-2.28.1.orig/lib/pngstream.hh iscan-2.28.1/lib/pngstream.hh --- iscan-2.28.1.orig/lib/pngstream.hh 2012-07-05 10:41:18.915366422 -0500 +++ iscan-2.28.1/lib/pngstream.hh 2012-07-05 11:02:37.480038151 -0500 @@ -108,6 +108,10 @@ png_structp); fundecl (void, write_end, png_structp, png_infop); +#if PNG_LIBPNG_VER > 10499 + fundecl (png_uint_32, get_current_row_number, + png_structp); +#endif #endif /* HAVE_PNG_H */ }; static png_lib_handle *lib;