--- frmts/png/pngdataset.cpp 2011-01-14 06:19:04.000000000 +0100 +++ frmts/png/pngdataset.cpp 2011-03-01 11:41:28.762999973 +0100 @@ -1315,7 +1315,7 @@ * instead of an int, which is what fread() actually returns. */ check = (png_size_t)VSIFReadL(data, (png_size_t)1, length, - (VSILFILE*)png_ptr->io_ptr); + (VSILFILE*)png_get_io_ptr(png_ptr)); if (check != length) png_error(png_ptr, "Read Error"); @@ -1330,7 +1330,7 @@ { png_uint_32 check; - check = VSIFWriteL(data, 1, length, (VSILFILE*)(png_ptr->io_ptr)); + check = VSIFWriteL(data, 1, length, (VSILFILE*)png_get_io_ptr(png_ptr)); if (check != length) png_error(png_ptr, "Write Error"); @@ -1341,7 +1341,7 @@ /************************************************************************/ static void png_vsi_flush(png_structp png_ptr) { - VSIFFlushL( (VSILFILE*)(png_ptr->io_ptr) ); + VSIFFlushL( (VSILFILE*)png_get_io_ptr(png_ptr) ); } /************************************************************************/ @@ -1357,7 +1357,7 @@ // libpng is generally not built as C++ and so won't honour unwind // semantics. Ugg. - jmp_buf* psSetJmpContext = (jmp_buf*) png_ptr->error_ptr; + jmp_buf* psSetJmpContext = (jmp_buf*) png_get_error_ptr(png_ptr); if (psSetJmpContext) { longjmp( *psSetJmpContext, 1 );