$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;
