From 9bb70283e967037e6d57bc863ef96d3b5185a989 Mon Sep 17 00:00:00 2001
From: Simon Ser <contact@emersion.fr>
Date: Sun, 12 Jul 2020 16:50:11 +0200
Subject: Assert output is found before removing from list

References: https://github.com/swaywm/sway/issues/5483
---
 sway/tree/output.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

(limited to 'sway')

diff --git a/sway/tree/output.c b/sway/tree/output.c
index ae3c3abf..d600c5c3 100644
--- a/sway/tree/output.c
+++ b/sway/tree/output.c
@@ -251,6 +251,11 @@ void output_disable(struct sway_output *output) {
 	if (!sway_assert(output->enabled, "Expected an enabled output")) {
 		return;
 	}
+	int index = list_find(root->outputs, output);
+	if (!sway_assert(index >= 0, "Output not found in root node")) {
+		return;
+	}
+
 	sway_log(SWAY_DEBUG, "Disabling output '%s'", output->wlr_output->name);
 	wl_signal_emit(&output->events.destroy, output);
 
@@ -258,7 +263,6 @@ void output_disable(struct sway_output *output) {
 
 	root_for_each_container(untrack_output, output);
 
-	int index = list_find(root->outputs, output);
 	list_del(root->outputs, index);
 
 	output->enabled = false;
-- 
cgit v1.2.3