aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar Brian Ashworth <bosrsf04@gmail.com>2019-02-08 22:29:35 -0500
committerLibravatar Drew DeVault <sir@cmpwn.com>2019-02-11 10:22:53 -0500
commit243d5a3a435c2786ecfa305e30fbca658e1861ff (patch)
treea7b42df4d2130842803718811f31f468fe1090c1
parentbar_cmd_modifier: add support for none (diff)
downloadsway-243d5a3a435c2786ecfa305e30fbca658e1861ff.tar.gz
sway-243d5a3a435c2786ecfa305e30fbca658e1861ff.tar.zst
sway-243d5a3a435c2786ecfa305e30fbca658e1861ff.zip
container_at_stacked: skip titles when zero pixels
It is possible to make the title bars have a zero pixel height while stacked, by using a blank font and no padding. This causes a division by zero when attempting to calculate the child index in container_at_stacked, which then results in a segfault when attempting to access the child at that bad index (INT_MIN). This just skips the check to see if the cursor is over a title bar of a child of a stacked container when the title bar height is zero since there will be no title bars.
-rw-r--r--sway/tree/container.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/sway/tree/container.c b/sway/tree/container.c
index 0ebdc51d..9358dad7 100644
--- a/sway/tree/container.c
+++ b/sway/tree/container.c
@@ -251,10 +251,12 @@ static struct sway_container *container_at_stacked(struct sway_node *parent,
251 251
252 // Title bars 252 // Title bars
253 int title_height = container_titlebar_height(); 253 int title_height = container_titlebar_height();
254 int child_index = (ly - box.y) / title_height; 254 if (title_height > 0) {
255 if (child_index < children->length) { 255 int child_index = (ly - box.y) / title_height;
256 struct sway_container *child = children->items[child_index]; 256 if (child_index < children->length) {
257 return child; 257 struct sway_container *child = children->items[child_index];
258 return child;
259 }
258 } 260 }
259 261
260 // Surfaces 262 // Surfaces