sway

i3-compatible Wayland compositor
git clone https://git.awy.one/sway
Log | Files | Refs | README | LICENSE

commit 8289e303085845b26e5fcb953facba36bbb99062
parent fb932cf8477120ee9fd9db37be1cd26a603fe0a3
Author: Ryan Dwyer <ryandwyer1@gmail.com>
Date:   Sun,  3 Jun 2018 10:28:24 +1000

Fix potential crash when destroying workspace

`_container_destroy` emits a destroy event, and any listener for this
event should have access to the full container, not a half destroyed
one.

`_container_destroy` also destroys the swayc, so we have to grab a
reference to the sway_workspace so we can free it afterwards.

This also fixes a memory leak where the floating container wasn't freed.

Fixes #2092.

Diffstat:
Msway/tree/container.c | 10+++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/sway/tree/container.c b/sway/tree/container.c @@ -204,9 +204,17 @@ static struct sway_container *container_workspace_destroy( } } - free(workspace->sway_workspace); + struct sway_workspace *sway_workspace = workspace->sway_workspace; + + // This emits the destroy event and also destroys the swayc. _container_destroy(workspace); + // Clean up the floating container + sway_workspace->floating->parent = NULL; + _container_destroy(sway_workspace->floating); + + free(sway_workspace); + if (output) { output_damage_whole(output->sway_output); }