From 3b9b98c024dc0100af3a0700d8057b2ea96a6714 Mon Sep 17 00:00:00 2001 From: tim Date: Mon, 16 Mar 2020 17:50:44 +0000 Subject: Recommit 1.259, but now with TAILQ_FOREACH_SAFE. From and OK okan@ Original commit message: Plug two memory leaks. Also get rid of a variable that is no longer necessary. OK okan@ --- client.c | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/client.c b/client.c index 653c0d4..21c51bc 100644 --- a/client.c +++ b/client.c @@ -667,22 +667,24 @@ client_close(struct client_ctx *cc) void client_set_name(struct client_ctx *cc) { - struct winname *wn; - char *newname; + struct winname *wn, *wnnxt; int i = 0; - if (!xu_get_strprop(cc->win, ewmh[_NET_WM_NAME], &newname)) - if (!xu_get_strprop(cc->win, XA_WM_NAME, &newname)) - newname = xstrdup(""); + free(cc->name); + if (!xu_get_strprop(cc->win, ewmh[_NET_WM_NAME], &cc->name)) + if (!xu_get_strprop(cc->win, XA_WM_NAME, &cc->name)) + cc->name = xstrdup(""); - TAILQ_FOREACH(wn, &cc->nameq, entry) { - if (strcmp(wn->name, newname) == 0) + TAILQ_FOREACH_SAFE(wn, &cc->nameq, entry, wnnxt) { + if (strcmp(wn->name, cc->name) == 0) { TAILQ_REMOVE(&cc->nameq, wn, entry); + free(wn->name); + free(wn); + } i++; } - cc->name = newname; wn = xmalloc(sizeof(*wn)); - wn->name = xstrdup(newname); + wn->name = xstrdup(cc->name); TAILQ_INSERT_TAIL(&cc->nameq, wn, entry); /* Garbage collection. */ -- cgit 1.4.1