diff --git a/dbus.c b/dbus.c index fd5b0d8..27072e4 100644 --- a/dbus.c +++ b/dbus.c @@ -294,6 +294,7 @@ static void onNotify(GDBusConnection * connection, n->actions = actions; } else { n->actions = NULL; + g_strfreev(actions->actions); free(actions); } diff --git a/menu.c b/menu.c index d17cc9b..8c2962a 100644 --- a/menu.c +++ b/menu.c @@ -190,10 +190,12 @@ void context_menu(void) int parent_io[2]; if (pipe(child_io) != 0) { PERR("pipe()", errno); + free(dmenu_input); return; } if (pipe(parent_io) != 0) { PERR("pipe()", errno); + free(dmenu_input); return; } int pid = fork(); @@ -222,8 +224,10 @@ void context_menu(void) close(child_io[1]); size_t len = read(parent_io[0], buf, 1023); - if (len == 0) + if (len == 0) { + free(dmenu_input); return; + } int status; waitpid(pid, &status, 0); @@ -232,5 +236,7 @@ void context_menu(void) close(parent_io[0]); dispatch_menu_result(buf); + + free(dmenu_input); } /* vim: set ts=8 sw=8 tw=0: */ diff --git a/notification.c b/notification.c index ede3622..70a01f6 100644 --- a/notification.c +++ b/notification.c @@ -155,6 +155,12 @@ void notification_free(notification * n) free(n->icon); free(n->msg); free(n->dbus_client); + + if (n->actions) { + g_strfreev(n->actions->actions); + free(n->actions->dmenu_str); + } + free(n); } @@ -480,11 +486,11 @@ int notification_init(notification * n, int id) string_replace_char('[', '(', human_readable); // kill square brackets string_replace_char(']', ')', human_readable); - n->actions->dmenu_str = - string_append(n->actions->dmenu_str, - g_strdup_printf("#%s [%s]", human_readable, - n->appname), - "\n"); + char *act_str = g_strdup_printf("#%s [%s]", human_readable, n->appname); + if (act_str) { + n->actions->dmenu_str = string_append(n->actions->dmenu_str, act_str, "\n"); + free(act_str); + } } } diff --git a/settings.c b/settings.c index 21ce59b..62e4e5b 100644 --- a/settings.c +++ b/settings.c @@ -47,8 +47,9 @@ static int ini_get_urgency(char *section, char *key, int def) fprintf(stderr, "unknown urgency: %s, ignoring\n", urg); - free(urg); } + if (urg) + free(urg); return ret; }