summaryrefslogtreecommitdiffstats
path: root/sway/focus.c
diff options
context:
space:
mode:
authorLibravatar Kevin Hamacher <kevin.hamacher@rub.de>2015-12-14 11:43:17 +0100
committerLibravatar Kevin Hamacher <kevin.hamacher@rub.de>2015-12-14 11:43:17 +0100
commit64a183b23d2a0b2e628f641345e33d7ea46c0d07 (patch)
tree6afaf5b52ea1542d5068d7cc6a12b63dc236a95c /sway/focus.c
parentFix rendering of borders on workspaces (swaybar) (diff)
downloadsway-64a183b23d2a0b2e628f641345e33d7ea46c0d07.tar.gz
sway-64a183b23d2a0b2e628f641345e33d7ea46c0d07.tar.zst
sway-64a183b23d2a0b2e628f641345e33d7ea46c0d07.zip
Fix dangling pointer on focus swap/describe WS
Diffstat (limited to 'sway/focus.c')
-rw-r--r--sway/focus.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/sway/focus.c b/sway/focus.c
index 6911ac00..c60f410c 100644
--- a/sway/focus.c
+++ b/sway/focus.c
@@ -96,6 +96,7 @@ bool set_focused_container(swayc_t *c) {
96 return false; 96 return false;
97 } 97 }
98 swayc_t *active_ws = swayc_active_workspace(); 98 swayc_t *active_ws = swayc_active_workspace();
99 int active_ws_child_count = active_ws->children->length + active_ws->floating->length;
99 100
100 swayc_log(L_DEBUG, c, "Setting focus to %p:%ld", c, c->handle); 101 swayc_log(L_DEBUG, c, "Setting focus to %p:%ld", c, c->handle);
101 102
@@ -118,6 +119,11 @@ bool set_focused_container(swayc_t *c) {
118 p = p->parent; 119 p = p->parent;
119 p->is_focused = false; 120 p->is_focused = false;
120 } 121 }
122 // active_ws might have been destroyed by now
123 // (focus swap away from empty ws = destroy ws)
124 if (active_ws_child_count == 0) {
125 active_ws = NULL;
126 }
121 127
122 // get new focused view and set focus to it. 128 // get new focused view and set focus to it.
123 p = get_focused_view(c); 129 p = get_focused_view(c);