diff options
author | tim | 2020-03-16 17:50:44 +0000 |
---|---|---|
committer | Wynn Wolf Arbor | 2020-03-26 20:12:46 +0100 |
commit | 1bbeca081afffe3039c655802fd8507c2b02caaa (patch) | |
tree | c74ad021c210aac99b45d3015c3a112188548d70 /client.c | |
parent | dd0de3d2b93f228ae00b7b2c38f6dd1e1a0630dc (diff) | |
download | cwm-1bbeca081afffe3039c655802fd8507c2b02caaa.tar.gz |
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@
Diffstat (limited to '')
-rw-r--r-- | client.c | 22 |
1 files changed, 12 insertions, 10 deletions
@@ -15,7 +15,7 @@ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * - * $OpenBSD: client.c,v 1.260 2020/03/14 16:11:09 tim Exp $ + * $OpenBSD: client.c,v 1.261 2020/03/16 17:50:44 tim Exp $ */ #include <sys/types.h> @@ -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. */ |