aboutsummaryrefslogtreecommitdiffstats
path: root/sway/commands/resize.c
diff options
context:
space:
mode:
authorLibravatar Ryan Dwyer <ryandwyer1@gmail.com>2019-01-15 08:17:41 +1000
committerLibravatar Ryan Dwyer <ryandwyer1@gmail.com>2019-01-15 08:17:41 +1000
commit289130430f3242ecdc25eb2bf84e20564b360c68 (patch)
treea46789c96e74e56ef9bf84d83e26c1937bdfe57e /sway/commands/resize.c
parentResize only current and immediate siblings rather than all siblings (diff)
downloadsway-289130430f3242ecdc25eb2bf84e20564b360c68.tar.gz
sway-289130430f3242ecdc25eb2bf84e20564b360c68.tar.zst
sway-289130430f3242ecdc25eb2bf84e20564b360c68.zip
Fix invalid pointers when using resize grow width on first/last siblings
Diffstat (limited to 'sway/commands/resize.c')
-rw-r--r--sway/commands/resize.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/sway/commands/resize.c b/sway/commands/resize.c
index f6141afc..6cdeb90c 100644
--- a/sway/commands/resize.c
+++ b/sway/commands/resize.c
@@ -173,8 +173,17 @@ void container_resize_tiled(struct sway_container *con,
173 int index = container_sibling_index(con); 173 int index = container_sibling_index(con);
174 174
175 if (axis == AXIS_HORIZONTAL || axis == AXIS_VERTICAL) { 175 if (axis == AXIS_HORIZONTAL || axis == AXIS_VERTICAL) {
176 prev = siblings->items[index - 1]; 176 if (index == 0) {
177 next = siblings->items[index + 1]; 177 next = siblings->items[1];
178 } else if (index == siblings->length - 1) {
179 // Convert edge to top/left
180 next = con;
181 con = siblings->items[index - 1];
182 amount = -amount;
183 } else {
184 prev = siblings->items[index - 1];
185 next = siblings->items[index + 1];
186 }
178 } else if (axis == WLR_EDGE_TOP || axis == WLR_EDGE_LEFT) { 187 } else if (axis == WLR_EDGE_TOP || axis == WLR_EDGE_LEFT) {
179 if (!sway_assert(index > 0, "Didn't expect first child")) { 188 if (!sway_assert(index > 0, "Didn't expect first child")) {
180 return; 189 return;