diff options
| author | Daniel De Graaf <code@danieldg.net> | 2024-01-21 09:08:52 -0500 | 
|---|---|---|
| committer | Kirill Primak <vyivel@eclair.cafe> | 2024-01-21 17:32:00 +0300 | 
| commit | 2c2625acd3a89ef2c4caa4094a3a51001041a524 (patch) | |
| tree | 854a05f2dfcc231f5ab97f6720afdf34000802ba | |
| parent | 08a06a7b6bbb324e9fc6e49e96379340404135b4 (diff) | |
| download | sway-2c2625acd3a89ef2c4caa4094a3a51001041a524.tar.xz | |
Fix SIGSEGV on output destroy
```
Program terminated with signal SIGSEGV, Segmentation fault.
144                             struct wlr_layer_surface_v1 *layer_surface = surface->layer_surface;
[Current thread is 1 (Thread 0x7f1f7c5b3ac0 (LWP 2473))]
(gdb) bt
```
Add a NULL check in `find_mapped_layer_by_client` like the one in `arrange_surface`.
| -rw-r--r-- | sway/desktop/layer_shell.c | 3 | 
1 files changed, 3 insertions, 0 deletions
diff --git a/sway/desktop/layer_shell.c b/sway/desktop/layer_shell.c index aca99c97..968b0cdb 100644 --- a/sway/desktop/layer_shell.c +++ b/sway/desktop/layer_shell.c @@ -140,6 +140,9 @@ static struct sway_layer_surface *find_mapped_layer_by_client(  		wl_list_for_each (node, &output->layers.shell_overlay->children, link) {  			struct sway_layer_surface *surface = scene_descriptor_try_get(node,  				SWAY_SCENE_DESC_LAYER_SHELL); +			if (!surface) { +				continue; +			}  			struct wlr_layer_surface_v1 *layer_surface = surface->layer_surface;  			struct wl_resource *resource = layer_surface->resource;  | 
