From 5c5da9bdce7d9e6ee327ae0aae4290cbc46f2e1b Mon Sep 17 00:00:00 2001 From: Furkan Sahin Date: Tue, 6 Jan 2026 00:19:57 +0100 Subject: Use goto-based error handling in view_init() This is less surprising than checking for the failed flag in the happy path. --- sway/tree/view.c | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/sway/tree/view.c b/sway/tree/view.c index be813be9..7fd06697 100644 --- a/sway/tree/view.c +++ b/sway/tree/view.c @@ -43,20 +43,17 @@ bool view_init(struct sway_view *view, enum sway_view_type type, bool failed = false; view->scene_tree = alloc_scene_tree(root->staging, &failed); view->content_tree = alloc_scene_tree(view->scene_tree, &failed); + if (failed) { + goto err; + } - if (!failed && !scene_descriptor_assign(&view->scene_tree->node, - SWAY_SCENE_DESC_VIEW, view)) { - failed = true; + if (!scene_descriptor_assign(&view->scene_tree->node, SWAY_SCENE_DESC_VIEW, view)) { + goto err; } view->image_capture_scene = wlr_scene_create(); if (view->image_capture_scene == NULL) { - failed = true; - } - - if (failed) { - wlr_scene_node_destroy(&view->scene_tree->node); - return false; + goto err; } view->type = type; @@ -67,6 +64,10 @@ bool view_init(struct sway_view *view, enum sway_view_type type, view->tearing_mode = TEARING_WINDOW_HINT; wl_signal_init(&view->events.unmap); return true; + +err: + wlr_scene_node_destroy(&view->scene_tree->node); + return false; } void view_destroy(struct sway_view *view) { -- cgit v1.2.3