diff --git a/loaders/loader_jpeg.c b/loaders/loader_jpeg.c index 1009ba3..fa441db 100644 --- a/loaders/loader_jpeg.c +++ b/loaders/loader_jpeg.c @@ -336,6 +336,7 @@ save(ImlibImage * im, ImlibProgressFunction progress, if (!progress(im, per, 0, (y - l), im->w, l)) { jpeg_finish_compress(&cinfo); + jpeg_destroy_compress(&cinfo); free(buf); fclose(f); return 2; diff --git a/loaders/loader_png.c b/loaders/loader_png.c index 07b415e..73bf8c8 100644 --- a/loaders/loader_png.c +++ b/loaders/loader_png.c @@ -304,7 +304,8 @@ save(ImlibImage * im, ImlibProgressFunction progress, if (setjmp(png_ptr->jmpbuf)) { fclose(f); - png_destroy_write_struct(&png_ptr, (png_infopp) NULL); + png_destroy_write_struct(&png_ptr, (png_infopp) &info_ptr); + png_destroy_info_struct(png_ptr, (png_infopp) &info_ptr); return 0; } png_init_io(png_ptr, f); @@ -387,7 +388,8 @@ save(ImlibImage * im, ImlibProgressFunction progress, if (data) free(data); png_write_end(png_ptr, info_ptr); - png_destroy_write_struct(&png_ptr, (png_infopp) NULL); + png_destroy_write_struct(&png_ptr, (png_infopp) &info_ptr); + png_destroy_info_struct(png_ptr, (png_infopp) &info_ptr); fclose(f); return 2; } @@ -400,8 +402,9 @@ save(ImlibImage * im, ImlibProgressFunction progress, if (data) free(data); png_write_end(png_ptr, info_ptr); - png_destroy_write_struct(&png_ptr, (png_infopp) NULL); - + png_destroy_write_struct(&png_ptr, (png_infopp) &info_ptr); + png_destroy_info_struct(png_ptr, (png_infopp) &info_ptr); + fclose(f); return 1; }