Assert output is found before removing from list

References: https://github.com/swaywm/sway/issues/5483
(cherry picked from commit 9bb70283e9)
This commit is contained in:
Simon Ser 2020-07-12 16:50:11 +02:00
parent 773e745f52
commit 863b9c8ad9
No known key found for this signature in database
GPG Key ID: 0FDE7BE0E88F5E48

View File

@ -251,6 +251,11 @@ void output_disable(struct sway_output *output) {
if (!sway_assert(output->enabled, "Expected an enabled output")) { if (!sway_assert(output->enabled, "Expected an enabled output")) {
return; 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); sway_log(SWAY_DEBUG, "Disabling output '%s'", output->wlr_output->name);
wl_signal_emit(&output->events.destroy, output); 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); root_for_each_container(untrack_output, output);
int index = list_find(root->outputs, output);
list_del(root->outputs, index); list_del(root->outputs, index);
output->enabled = false; output->enabled = false;