diff -up nogravity-2.00/rlx32/src/gx_png.c~ nogravity-2.00/rlx32/src/gx_png.c --- nogravity-2.00/rlx32/src/gx_png.c~ 2005-05-23 20:14:50.000000000 +0200 +++ nogravity-2.00/rlx32/src/gx_png.c 2011-12-06 16:28:09.710462042 +0100 @@ -50,7 +50,7 @@ pngx_readm_pData(png_structp png_ptr, pn * instead of an int, which is what fread() actually returns. */ check = (png_size_t)FIO_cur->fread(data, (png_size_t)1, length, - (SYS_FILEHANDLE)png_ptr->io_ptr); + (SYS_FILEHANDLE)png_get_io_ptr(png_ptr)); if (check != length) { @@ -77,7 +77,11 @@ static void pngx_error(png_structp png_p #ifdef _DEBUG SYS_Msg("!%s", message); #endif +#if PNG_LIBPNG_VER >= 10400 + png_longjmp(png_ptr, 1); +#else longjmp(png_ptr->jmpbuf, 1); +#endif } static void pngx_warning(png_structp png_ptr, png_const_charp message) @@ -125,7 +125,11 @@ if (!pClut) info_ptr = png_create_info_struct(png_ptr); png_read_info(png_ptr, info_ptr); /* read all PNG info up to image data */ +#if PNG_LIBPNG_VER >= 10400 + if (setjmp(png_jmpbuf(png_ptr))) +#else if (setjmp(png_ptr->jmpbuf)) +#endif { png_destroy_read_struct(&png_ptr, &info_ptr, NULL); return NULL;