Peter Lemenkov 962f81
From 56103b05af8a9d67ce158eceab9f7c984b38eabb Mon Sep 17 00:00:00 2001
Peter Lemenkov 962f81
From: Jon Ciesla <limburgher@gmail.com>
Peter Lemenkov 962f81
Date: Fri, 2 Mar 2012 09:39:36 -0600
Peter Lemenkov 962f81
Subject: [PATCH 3/3] libpng fix.
Peter Lemenkov 962f81
Peter Lemenkov 962f81
---
Peter Lemenkov 962f81
 input-png.c | 22 ++++++----------------
Peter Lemenkov 962f81
 1 file changed, 6 insertions(+), 16 deletions(-)
Peter Lemenkov 962f81
Peter Lemenkov 962f81
diff --git a/input-png.c b/input-png.c
Peter Lemenkov 962f81
index 77b96f1..b631f07 100644
Peter Lemenkov 962f81
--- a/input-png.c
Peter Lemenkov 962f81
+++ b/input-png.c
Peter Lemenkov 962f81
@@ -42,7 +42,7 @@ static png_bytep * read_png(png_structp png_ptr, png_infop info_ptr, at_input_op
Jon Ciesla 0fbea0
 
Jon Ciesla 0fbea0
 static void handle_warning(png_structp png, const at_string message) {
Jon Ciesla 0fbea0
         LOG1("PNG warning: %s", message);
Jon Ciesla 0fbea0
-	at_exception_warning((at_exception_type *)png->error_ptr,
Jon Ciesla 0fbea0
+	at_exception_warning((at_exception_type *)png_get_error_ptr(png),
Jon Ciesla 0fbea0
 			     message);
Jon Ciesla 0fbea0
 	/* at_exception_fatal((at_exception_type *)at_png->error_ptr,
Jon Ciesla 0fbea0
 	   "PNG warning"); */
Peter Lemenkov 962f81
@@ -50,7 +50,7 @@ static void handle_warning(png_structp png, const at_string message) {
Jon Ciesla 0fbea0
 
Jon Ciesla 0fbea0
 static void handle_error(png_structp png, const at_string message) {
Jon Ciesla 0fbea0
 	LOG1("PNG error: %s", message);
Jon Ciesla 0fbea0
-	at_exception_fatal((at_exception_type *)png->error_ptr,
Jon Ciesla 0fbea0
+	at_exception_fatal((at_exception_type *)png_get_error_ptr(png),
Jon Ciesla 0fbea0
 			   message);
Jon Ciesla 0fbea0
 	/* at_exception_fatal((at_exception_type *)at_png->error_ptr,
Jon Ciesla 0fbea0
 	   "PNG error"); */
Peter Lemenkov 962f81
@@ -157,8 +157,8 @@ read_png(png_structp png_ptr, png_infop info_ptr, at_input_opts_type * opts)
Jon Ciesla 0fbea0
 
Jon Ciesla 0fbea0
 	png_set_strip_16(png_ptr);
Jon Ciesla 0fbea0
 	png_set_packing(png_ptr);
Jon Ciesla 0fbea0
-	if ((png_ptr->bit_depth < 8) ||
Jon Ciesla 0fbea0
-	    (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE) ||
Jon Ciesla 0fbea0
+	if ((png_get_bit_depth(png_ptr, info_ptr) < 8) ||
Jon Ciesla 0fbea0
+	    (png_get_color_type(png_ptr, info_ptr) == PNG_COLOR_TYPE_PALETTE) ||
Jon Ciesla 0fbea0
 	    (png_get_valid(png_ptr, info_ptr, PNG_INFO_tRNS)))
Jon Ciesla 0fbea0
 		png_set_expand(png_ptr);
Jon Ciesla 0fbea0
 
Peter Lemenkov 962f81
@@ -181,20 +181,10 @@ read_png(png_structp png_ptr, png_infop info_ptr, at_input_opts_type * opts)
Jon Ciesla 0fbea0
 				   PNG_BACKGROUND_GAMMA_FILE, 1, 1.0);
Jon Ciesla 0fbea0
 	} else
Jon Ciesla 0fbea0
 		png_set_strip_alpha(png_ptr);
Jon Ciesla 0fbea0
+	png_set_interlace_handling(png_ptr);
Jon Ciesla 0fbea0
 	png_read_update_info(png_ptr, info_ptr);
Jon Ciesla 0fbea0
 
Jon Ciesla 0fbea0
-
Jon Ciesla 0fbea0
-	info_ptr->row_pointers = (png_bytepp)png_malloc(png_ptr,
Jon Ciesla 0fbea0
-							info_ptr->height * sizeof(png_bytep));
Jon Ciesla 0fbea0
-#ifdef PNG_FREE_ME_SUPPORTED
Jon Ciesla 0fbea0
-	info_ptr->free_me |= PNG_FREE_ROWS;
Jon Ciesla 0fbea0
-#endif
Jon Ciesla 0fbea0
-	for (row = 0; row < (int)info_ptr->height; row++)
Jon Ciesla 0fbea0
-		info_ptr->row_pointers[row] = (png_bytep)png_malloc(png_ptr,
Jon Ciesla 0fbea0
-								    png_get_rowbytes(png_ptr, info_ptr));
Jon Ciesla 0fbea0
-	
Jon Ciesla 0fbea0
-	png_read_image(png_ptr, info_ptr->row_pointers);
Jon Ciesla 0fbea0
-	info_ptr->valid |= PNG_INFO_IDAT;
Jon Ciesla 0fbea0
+	png_read_png(png_ptr, info_ptr, PNG_TRANSFORM_IDENTITY, NULL);
Jon Ciesla 0fbea0
 	png_read_end(png_ptr, info_ptr);
Jon Ciesla 0fbea0
 	return png_get_rows(png_ptr, info_ptr);
Jon Ciesla 0fbea0
 }
Peter Lemenkov 962f81
-- 
Peter Lemenkov 962f81
1.7.11.2
Peter Lemenkov 962f81