From ac7b3b0d150949f654558280c98199f85c796ca9 Mon Sep 17 00:00:00 2001 From: Martin Duquesnoy Date: Mon, 23 Mar 2009 02:24:28 +0100 Subject: [PATCH] Client/Button/Titlbar: Fix potential segfault. --- src/client.c | 2 +- src/event.c | 8 ++++++-- src/frame.c | 2 +- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/client.c b/src/client.c index ab7fa12..35a5b0f 100644 --- a/src/client.c +++ b/src/client.c @@ -238,7 +238,7 @@ client_focus(Client *c) Client *c; int i; - if(!BUTTONWH) + if(!BUTTONWH || !(TBARH - BORDH)) return NULL; for(c = clients; c; c = c->next) diff --git a/src/event.c b/src/event.c index 16b6332..849afd7 100644 --- a/src/event.c +++ b/src/event.c @@ -423,6 +423,7 @@ maprequest(XMapRequestEvent *ev) CHECK(XGetWindowAttributes(dpy, ev->window, &at)); CHECK(!at.override_redirect); + if(!(c = client_gb_win(ev->window))) client_manage(ev->window, &at); @@ -440,6 +441,7 @@ propertynotify(XPropertyEvent *ev) if(ev->state == PropertyDelete) return; + if((c = client_gb_win(ev->window))) { switch(ev->atom) @@ -453,9 +455,11 @@ propertynotify(XPropertyEvent *ev) case XA_WM_NORMAL_HINTS: client_size_hints(c); break; + case XA_WM_NAME: + client_get_name(c); + break; } - if(ev->atom == XA_WM_NAME - || ev->atom == net_atom[net_wm_name]) + if(ev->atom == net_atom[net_wm_name]) client_get_name(c); } diff --git a/src/frame.c b/src/frame.c index 6ed2406..dbcebad 100644 --- a/src/frame.c +++ b/src/frame.c @@ -206,7 +206,7 @@ frame_update(Client *c) if(conf.titlebar.nbutton && BUTTONWH >= 1) { if(conf.titlebar.stipple) - draw_rectangle(c->titlebar->dr, 0, 0, c->button_last_x + TBARH, + draw_rectangle(c->titlebar->dr, 0, 0, c->button_last_x + TBARH - (TBARH / 4), TBARH + BORDH * 2, c->colors.frame); for(i = 0; i < conf.titlebar.nbutton; ++i)