diff options
-rw-r--r-- | src/feh_png.c | 5 | ||||
-rw-r--r-- | src/wallpaper.c | 9 |
2 files changed, 12 insertions, 2 deletions
diff --git a/src/feh_png.c b/src/feh_png.c index f02aecb..129eb45 100644 --- a/src/feh_png.c +++ b/src/feh_png.c @@ -115,12 +115,15 @@ int feh_png_write_png(Imlib_Image image, char *file, ...) return 0; png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); - if (!png_ptr) + if (!png_ptr) { + fclose(fp); return 0; + } info_ptr = png_create_info_struct(png_ptr); if (!info_ptr) { png_destroy_write_struct(&png_ptr, (png_infopp) NULL); + fclose(fp); return 0; } diff --git a/src/wallpaper.c b/src/wallpaper.c index b6f2c0c..a11a50d 100644 --- a/src/wallpaper.c +++ b/src/wallpaper.c @@ -292,7 +292,7 @@ void feh_wm_set_bg(char *fil, Imlib_Image im, int centered, int scaled, Atom prop_root, prop_esetroot, type; int format, i; unsigned long length, after; - unsigned char *data_root, *data_esetroot; + unsigned char *data_root = NULL, *data_esetroot = NULL; Pixmap pmap_d1, pmap_d2; gib_list *l; @@ -550,6 +550,13 @@ void feh_wm_set_bg(char *fil, Imlib_Image im, int centered, int scaled, } } } + + if (data_root) + XFree(data_root); + + if (data_esetroot) + XFree(data_esetroot); + /* This will locate the property, creating it if it doesn't exist */ prop_root = XInternAtom(disp2, "_XROOTPMAP_ID", False); prop_esetroot = XInternAtom(disp2, "ESETROOT_PMAP_ID", False); |