use accessor functions to access deprecated members of the png_structp
authorTony Cook <tony@develop=help.com>
Mon, 27 Sep 2010 12:32:23 +0000 (12:32 +0000)
committerTony Cook <tony@develop=help.com>
Mon, 27 Sep 2010 12:32:23 +0000 (12:32 +0000)
Changes
PNG/impng.c

diff --git a/Changes b/Changes
index 4107b26c720a4ed2dec7ffc70db354d3323e729b..80c0d396923abf929dc0e7ed69e130b28e26655d 100644 (file)
--- a/Changes
+++ b/Changes
@@ -1,5 +1,13 @@
 Imager release history.  Older releases can be found in Changes.old
 
+Imager 0.78 - unreleased
+===========
+
+Bug fixes:
+
+ - don't access deprecated members of the png_structp.
+   https://rt.cpan.org/Ticket/Display.html?id=60242
+
 Imager 0.77_02 - 27 Sep 2010
 ==============
 
index d1821cd188d227b0ac5010b71f5e24362d1a5141..0d41c661ed8d09f2ed1f3e1e7b1d8bff24ea9d14 100644 (file)
@@ -33,7 +33,7 @@ static int CC2C[PNG_COLOR_MASK_PALETTE|PNG_COLOR_MASK_COLOR|PNG_COLOR_MASK_ALPHA
 
 static void
 wiol_read_data(png_structp png_ptr, png_bytep data, png_size_t length) {
-  io_glue *ig = (io_glue *)png_ptr->io_ptr;
+  io_glue *ig = png_get_io_ptr(png_ptr);
   int rc = ig->readcb(ig, data, length);
   if (rc != length) png_error(png_ptr, "Read overflow error on an iolayer source.");
 }
@@ -41,7 +41,7 @@ wiol_read_data(png_structp png_ptr, png_bytep data, png_size_t length) {
 static void
 wiol_write_data(png_structp png_ptr, png_bytep data, png_size_t length) {
   int rc;
-  io_glue *ig = (io_glue *)png_ptr->io_ptr;
+  io_glue *ig = png_get_io_ptr(png_ptr);
   rc = ig->writecb(ig, data, length);
   if (rc != length) png_error(png_ptr, "Write error on an iolayer source.");
 }
@@ -110,13 +110,12 @@ i_writepng_wiol(i_img *im, io_glue *ig) {
   /* Set error handling.  REQUIRED if you aren't supplying your own
    * error hadnling functions in the png_create_write_struct() call.
    */
-  if (setjmp(png_ptr->jmpbuf)) {
+  if (setjmp(png_jmpbuf(png_ptr))) {
     png_destroy_write_struct(&png_ptr, &info_ptr);
     return(0);
   }
   
   png_set_write_fn(png_ptr, (png_voidp) (ig), wiol_write_data, wiol_flush_data);
-  png_ptr->io_ptr = (png_voidp) ig;
 
   /* Set the image information here.  Width and height are up to 2^31,
    * bit_depth is one of 1, 2, 4, 8, or 16, but valid values also depend on
@@ -204,14 +203,13 @@ i_readpng_wiol(io_glue *ig) {
     return NULL;
   }
   
-  if (setjmp(png_ptr->jmpbuf)) {
+  if (setjmp(png_jmpbuf(png_ptr))) {
     if (im) i_img_destroy(im);
     mm_log((1,"i_readpng_wiol: error.\n"));
     png_destroy_read_struct(&png_ptr, &info_ptr, (png_infopp)NULL);
     return NULL;
   }
 
-  png_ptr->io_ptr = (png_voidp) ig;
   png_set_sig_bytes(png_ptr, sig_read);
   png_read_info(png_ptr, info_ptr);
   png_get_IHDR(png_ptr, info_ptr, &width, &height, &bit_depth, &color_type, &interlace_type, NULL, NULL);