]> git.imager.perl.org - imager.git/blobdiff - png.c
correct cast
[imager.git] / png.c
diff --git a/png.c b/png.c
index aeb8e59c25d9d7307e0105bbcc80b58d5256a121..af9033e886c068b4de56c43953f711f1ccf2d4e4 100644 (file)
--- a/png.c
+++ b/png.c
@@ -162,17 +162,11 @@ i_writepng_wiol(i_img *im, io_glue *ig) {
   }
   else {
     unsigned char *data = mymalloc(im->xsize * im->channels);
-    if (data) {
-      for (y = 0; y < height; y++) {
-        i_gsamp(im, 0, im->xsize, y, data, NULL, im->channels);
-        png_write_row(png_ptr, (png_bytep)data);
-      }
-      myfree(data);
-    }
-    else {
-      png_destroy_write_struct(&png_ptr, info_ptr);
-      return 0;
+    for (y = 0; y < height; y++) {
+      i_gsamp(im, 0, im->xsize, y, data, NULL, im->channels);
+      png_write_row(png_ptr, (png_bytep)data);
     }
+    myfree(data);
   }
 
   png_write_end(png_ptr, info_ptr);
@@ -190,7 +184,7 @@ static void get_png_tags(i_img *im, png_structp png_ptr, png_infop info_ptr);
 
 i_img*
 i_readpng_wiol(io_glue *ig, int length) {
-  i_img *im;
+  i_img *im = NULL;
   png_structp png_ptr;
   png_infop info_ptr;
   png_uint_32 width, height;
@@ -214,6 +208,7 @@ i_readpng_wiol(io_glue *ig, int length) {
   }
   
   if (setjmp(png_ptr->jmpbuf)) {
+    if (im) i_img_destroy(im);
     mm_log((1,"i_readpng_wiol: error.\n"));
     png_destroy_read_struct(&png_ptr, &info_ptr, (png_infopp)NULL);
     return NULL;