Imported from libpng-1.0.7beta12.tar
diff --git a/pngread.c b/pngread.c
index 2931089..86c89ce 100644
--- a/pngread.c
+++ b/pngread.c
@@ -1,7 +1,7 @@
 
 /* pngread.c - read a PNG file
  *
- * libpng 1.0.7beta11 - May 6, 2000
+ * libpng 1.0.7beta12 - May 12, 2000
  * For conditions of distribution and use, see copyright notice in png.h
  * Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
  * Copyright (c) 1996, 1997 Andreas Dilger
@@ -697,7 +697,7 @@
  * not called png_set_interlace_handling(), the display_row buffer will
  * be ignored, so pass NULL to it.
  *
- * [*] png_handle_alpha() does not exist yet, as of libpng version 1.0.7beta11
+ * [*] png_handle_alpha() does not exist yet, as of libpng version 1.0.7beta12
  */
 
 void PNGAPI
@@ -746,7 +746,7 @@
  * only call this function once.  If you desire to have an image for
  * each pass of a interlaced image, use png_read_rows() instead.
  *
- * [*] png_handle_alpha() does not exist yet, as of libpng version 1.0.7beta11
+ * [*] png_handle_alpha() does not exist yet, as of libpng version 1.0.7beta12
  */
 void PNGAPI
 png_read_image(png_structp png_ptr, png_bytepp image)
@@ -1293,18 +1293,9 @@
 
    /* -------------- image transformations end here ------------------- */
 
-   if(info_ptr->row_pointers)
-   {
 #ifdef PNG_FREE_ME_SUPPORTED
-      if(info_ptr->free_me & PNG_FREE_ROWS)
-      {
-         for (row = 0; row < (int)info_ptr->height; row++)
-            png_free(png_ptr, info_ptr->row_pointers[row]);
-         png_free(png_ptr, info_ptr->row_pointers);
-         info_ptr->row_pointers = NULL;
-      }
+   png_free_data(png_ptr, info_ptr, PNG_FREE_ROWS, 0);
 #endif
-   }
    if(info_ptr->row_pointers == NULL)
    {
       info_ptr->row_pointers = (png_bytepp)png_malloc(png_ptr,