From: Marco Peereboom Date: Tue, 27 Jan 2009 21:30:18 +0000 (+0000) Subject: Prevent acessing pointer that has been freed. X-Git-Url: https://jasonwoof.com/gitweb/?a=commitdiff_plain;h=134554a0430cd9470f4a3d5d8325c1b7a569527a;p=spectrwm.git Prevent acessing pointer that has been freed. Still one weird focus bug leftover where when the last window in a ws gets destroyed and if there is a window on the alternate screen it gets focus. --- diff --git a/scrotwm.c b/scrotwm.c index 029548f..ba80027 100644 --- a/scrotwm.c +++ b/scrotwm.c @@ -1106,7 +1106,6 @@ cycle_layout(struct swm_region *r, union arg *args) if (ws->cur_layout->l_stack == NULL) ws->cur_layout = &layouts[0]; ignore_enter = 1; - stack(); } @@ -1930,16 +1929,16 @@ destroynotify(XEvent *e) ws->focus = TAILQ_PREV(win, ws_win_list, entry); if (ws->focus == NULL) ws->focus = TAILQ_FIRST(&ws->winlist); - if (ws->focus == win) + if (ws->focus == NULL || ws->focus == win) { ws->focus = NULL; - if (cur_focus == win) + unfocus_all(); + } else focus_win(ws->focus); - TAILQ_REMOVE(&ws->winlist, win, entry); set_win_state(win, WithdrawnState); free(win); + stack(); } - stack(); } void