$NetBSD: patch-af,v 1.2 2006/04/19 17:04:31 wiz Exp $ --- rw/readPNG.c.orig 1996-08-29 07:24:48.000000000 +0200 +++ rw/readPNG.c @@ -46,8 +46,8 @@ Image * ReadPNG(char *file) { FILE *fp; - png_structp png_ptr; - png_infop info_ptr; + png_structp png_ptr = NULL; + png_infop info_ptr = NULL; int i, hasAlpha=FALSE; int width, height, level, bit_depth, npasses; Image *image = NULL; @@ -59,14 +59,15 @@ ReadPNG(char *file) return NULL; } - png_ptr = (png_structp)malloc(sizeof(png_struct)); + png_ptr = (png_structp)png_create_read_struct(PNG_LIBPNG_VER_STRING, + NULL, NULL, NULL); if (!png_ptr) { RWSetMsg("Error allocating PNG png_ptr memory"); fclose(fp); return NULL; } - info_ptr = (png_infop)malloc(sizeof(png_info)); + info_ptr = (png_infop)png_create_info_struct(png_ptr); if (!info_ptr) { RWSetMsg("Error allocating PNG info_ptr memory"); free(png_ptr); @@ -74,17 +75,13 @@ ReadPNG(char *file) return NULL; } - if (setjmp(png_ptr->jmpbuf)) { + if (setjmp(png_jmpbuf(png_ptr))) { RWSetMsg("Error setting longjmp error handler"); - png_read_destroy(png_ptr, info_ptr, (png_info *)0); - free(png_ptr); - free(info_ptr); + png_destroy_read_struct(&png_ptr, &info_ptr, NULL); fclose(fp); return NULL; } - png_info_init(info_ptr); - png_read_init(png_ptr); png_init_io(png_ptr, fp); png_read_info(png_ptr, info_ptr); @@ -183,7 +180,7 @@ ReadPNG(char *file) info_ptr->color_type); fflush(stderr); RWSetMsg("Unknown PNG image type"); - png_read_destroy(png_ptr, info_ptr, (png_infop)NULL); + png_destroy_read_struct(&png_ptr, &info_ptr, NULL); free(png_ptr); free(info_ptr); fclose(fp); @@ -217,7 +214,7 @@ ReadPNG(char *file) fprintf(stderr, "ReadPNG error: unable to malloc png_data\n"); fflush(stderr); ImageDelete(image); - png_read_destroy(png_ptr, info_ptr, (png_infop)NULL); + png_destroy_read_struct(&png_ptr, &info_ptr, NULL); free(png_ptr); free(info_ptr); fclose(fp); @@ -271,7 +268,7 @@ ReadPNG(char *file) */ png_read_end(png_ptr, info_ptr); - png_read_destroy(png_ptr, info_ptr, (png_infop)NULL); + png_destroy_read_struct(&png_ptr, &info_ptr, NULL); free(png_ptr); free(info_ptr); fclose(fp);