Fix certain minimal config builds

The removal of png_struct::row_buffer and png_struct::row_format from write
builds configured without filter or transform support (respectively) wasn't
complete; some of the png.c and pngwrite.c cleanup code needed to handle the
potentially removed members.

Signed-off-by: John Bowler <jbowler@acm.org>
This commit is contained in:
John Bowler 2015-11-22 20:34:00 -08:00
parent 504ebd427d
commit 368bb1b241
2 changed files with 7 additions and 3 deletions

2
png.c
View File

@ -2448,10 +2448,12 @@ png_copy_row(png_const_structrp png_ptr, png_bytep dp, png_const_bytep sp,
* little endian; bits to copy in the bottom of 's'. Make 'remaining'
* into a mask of the bits to *preserve* in dp.
*/
# ifdef PNG_TRANSFORM_MECH_SUPPORTED
if ((png_ptr->row_format & PNG_FORMAT_FLAG_SWAPPED) == 0U)
remaining = 0xffU >> remaining;
else
# endif /* TRANSFORM_MECH */
remaining = 0xffU << remaining;
/* remaining is now the bits to *keep* from the destination byte, if

View File

@ -1147,8 +1147,10 @@ png_write_destroy(png_structrp png_ptr)
/* Free our memory. png_free checks NULL for us. */
png_free_buffer_list(png_ptr, &png_ptr->zbuffer_list);
#ifdef PNG_WRITE_FILTER_SUPPORTED
png_free(png_ptr, png_ptr->row_buffer);
png_ptr->row_buffer = NULL;
#endif /* WRITE_FILTER */
#ifdef PNG_TRANSFORM_MECH_SUPPORTED
png_transform_free(png_ptr, &png_ptr->transform_list);
#endif