fix more memory leaks
authorMarkus Teich <markus.teich@stusta.mhn.de>
Wed, 11 Nov 2015 18:09:13 +0000 (19:09 +0100)
committerMarkus Teich <markus.teich@stusta.mhn.de>
Wed, 11 Nov 2015 18:09:13 +0000 (19:09 +0100)
sent.c

diff --git a/sent.c b/sent.c
index 7a85a3f208b4d297e58cca5ca6f97a8a230a78d5..8ef7e3395c472cbda78bb822cd2a7b753e4e5ff8 100644 (file)
--- a/sent.c
+++ b/sent.c
@@ -142,6 +142,7 @@ Image *pngopen(char *filename)
                return NULL;
 
        img = malloc(sizeof(Image));
+       memset(img, 0, sizeof(Image));
        if (!(img->png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL,
                                        NULL, NULL))) {
                free(img);
@@ -166,6 +167,9 @@ Image *pngopen(char *filename)
 void pngfree(Image *img)
 {
        png_destroy_read_struct(&img->png_ptr, img->info_ptr ? &img->info_ptr : NULL, NULL);
+       free(img->buf);
+       if (img->ximg)
+               XDestroyImage(img->ximg);
        free(img);
 }
 
@@ -344,6 +348,8 @@ void cleanup()
        XCloseDisplay(xw.dpy);
        if (slides) {
                for (i = 0; i < slidecount; i++) {
+                       if (slides[i].text)
+                               free(slides[i].text);
                        if (slides[i].img)
                                pngfree(slides[i].img);
                }
@@ -408,8 +414,6 @@ void load(FILE *fp)
                        slides[i].img = 0;
                i++;
        }
-       if (slides)
-               slides[i].text = NULL;
        slidecount = i;
 }