From 3c93e2cf1bf56f4bdbe128eebf1fb250ab136ed2 Mon Sep 17 00:00:00 2001 From: Calvin Lee Date: Sun, 6 Aug 2017 12:04:16 +0200 Subject: [PATCH] Prevent race condition in the kill command When killing views with `close_views` a use-after-free can sometimes occur because parent views are killed before their children. This commit makes `container_map` run functions on child containers before their parent, fixing the race. Fixes #1302 --- sway/container.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sway/container.c b/sway/container.c index 125e1e3d..14647b3a 100644 --- a/sway/container.c +++ b/sway/container.c @@ -849,7 +849,6 @@ int swayc_gap(swayc_t *container) { void container_map(swayc_t *container, void (*f)(swayc_t *view, void *data), void *data) { if (container) { - f(container, data); int i; if (container->children) { for (i = 0; i < container->children->length; ++i) { @@ -863,6 +862,7 @@ void container_map(swayc_t *container, void (*f)(swayc_t *view, void *data), voi container_map(child, f, data); } } + f(container, data); } }