$NetBSD: patch-ag,v 1.1 2001/08/03 09:43:18 wiz Exp $ --- rw/writePNG.c.orig Thu Aug 29 07:24:57 1996 +++ rw/writePNG.c @@ -38,26 +38,23 @@ if (!fp) return 1; - png_ptr = (png_structp)malloc(sizeof (png_struct)); + png_ptr = (png_structp)png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, + NULL, NULL); if (!png_ptr) return 1; - info_ptr = (png_infop)malloc(sizeof (png_info)); + info_ptr = (png_infop)png_create_info_struct(png_ptr); if (!info_ptr) { - free(png_ptr); + png_destroy_write_struct(&png_ptr, NULL); return 1; } - if (setjmp(png_ptr->jmpbuf)) { - png_write_destroy(png_ptr); - free(info_ptr); - free(png_ptr); + if (setjmp(png_jmpbuf(png_ptr))) { + png_destroy_write_struct(&png_ptr, &info_ptr); fclose(fp); return 1; } - png_info_init(info_ptr); - png_write_init(png_ptr); png_init_io(png_ptr, fp); info_ptr->width = image->width; @@ -200,9 +197,7 @@ /* alpha channel version */ fprintf(stderr, "WritePNG: sorry, can't write alpha images yet\n"); fflush(stderr); - png_write_destroy(png_ptr); - free(info_ptr); - free(png_ptr); + png_destroy_write_struct(&png_ptr, &info_ptr); fclose(fp); return 1; } else { @@ -222,13 +217,11 @@ } png_write_end(png_ptr, NULL); - png_write_destroy(png_ptr); + png_destroy_write_struct(&png_ptr, &info_ptr); if (software) free(software); /* we LOVE free software!! */ - free(info_ptr); - free(png_ptr); /* necessary?? */ fclose(fp); return 0;