From dcd2076f3854f4bb0018b6a47781dc48a55393b0 Mon Sep 17 00:00:00 2001 From: Simon Ser Date: Thu, 10 Nov 2022 14:35:14 +0100 Subject: Use wl_signal_emit_mutable() This function fixes segfaults when emitting a signal potentially removes arbitrary listeners. --- sway/tree/workspace.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'sway/tree/workspace.c') diff --git a/sway/tree/workspace.c b/sway/tree/workspace.c index c84320bd..0c4e97a3 100644 --- a/sway/tree/workspace.c +++ b/sway/tree/workspace.c @@ -114,7 +114,7 @@ struct sway_workspace *workspace_create(struct sway_output *output, output_sort_workspaces(output); ipc_event_workspace(NULL, ws, "init"); - wl_signal_emit(&root->events.new_node, &ws->node); + wl_signal_emit_mutable(&root->events.new_node, &ws->node); return ws; } @@ -142,7 +142,7 @@ void workspace_destroy(struct sway_workspace *workspace) { void workspace_begin_destroy(struct sway_workspace *workspace) { sway_log(SWAY_DEBUG, "Destroying workspace '%s'", workspace->name); ipc_event_workspace(NULL, workspace, "empty"); // intentional - wl_signal_emit(&workspace->node.events.destroy, &workspace->node); + wl_signal_emit_mutable(&workspace->node.events.destroy, &workspace->node); if (workspace->output) { workspace_detach(workspace); -- cgit v1.2.3-54-g00ecf