Introduction
Introduction Statistics Contact Development Disclaimer Help
simplify png cleanup - sent - simple plaintext presentation tool
git clone git://git.suckless.org/sent
Log
Files
Refs
README
LICENSE
---
commit f6455efd52cdcfcb25030a8f3644162e8b861573
parent 67ec8b1547b9e58155f0966731820b25e71240e8
Author: Markus Teich <[email protected]>
Date: Wed, 11 Nov 2015 18:49:57 +0100
simplify png cleanup
Diffstat:
M sent.c | 24 ++++++++++++++++--------
1 file changed, 16 insertions(+), 8 deletions(-)
---
diff --git a/sent.c b/sent.c
@@ -79,6 +79,7 @@ typedef struct {
} Shortcut;
static Image *pngopen(char *filename);
+static void pngfree(Image *img);
static int pngread(Image *img);
static int pngprepare(Image *img);
static void pngscale(Image *img);
@@ -146,14 +147,9 @@ Image *pngopen(char *filename)
free(img);
return NULL;
}
- if (!(img->info_ptr = png_create_info_struct(img->png_ptr))) {
- png_destroy_read_struct(&img->png_ptr, NULL, NULL);
- free(img);
- return NULL;
- }
- if (setjmp(png_jmpbuf(img->png_ptr))) {
- png_destroy_read_struct(&img->png_ptr, &img->info_ptr, NULL);
- free(img);
+ if (!(img->info_ptr = png_create_info_struct(img->png_ptr))
+ || setjmp(png_jmpbuf(img->png_ptr))) {
+ pngfree(img);
return NULL;
}
@@ -167,6 +163,12 @@ Image *pngopen(char *filename)
return img;
}
+void pngfree(Image *img)
+{
+ png_destroy_read_struct(&img->png_ptr, img->info_ptr ? &img->info_ptr …
+ free(img);
+}
+
int pngread(Image *img)
{
unsigned int y;
@@ -330,6 +332,8 @@ void getfontsize(char *str, unsigned int *width, unsigned i…
void cleanup()
{
+ unsigned int i;
+
drw_scm_free(sc);
drw_free(d);
@@ -337,6 +341,10 @@ void cleanup()
XSync(xw.dpy, False);
XCloseDisplay(xw.dpy);
if (slides) {
+ for (i = 0; i < slidecount; i++) {
+ if (slides[i].img)
+ pngfree(slides[i].img);
+ }
free(slides);
slides = NULL;
}
You are viewing proxied material from suckless.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.