diff options
author | Joshua Ashton <joshua@froggi.es> | 2023-05-10 15:51:16 +0000 |
---|---|---|
committer | Christian Rauch <rauch.christian@gmx.de> | 2023-05-16 20:37:21 +0000 |
commit | a40348a976fd32bd1861fe51edabc749b3d1f336 (patch) | |
tree | 0f263fef22a8cc9f858c1466b29e49393673bc0b | |
parent | 0fc00cb603899efe2de42c4c8f29e27571388641 (diff) |
cairo: Fix crash on destroy when globals could not be obtained
Gamescope does not advertise subcompositor so when this plugin is initialized, it fails and then attempts to destroy a NULL subcompositor which segfaults in wl_proxy code.
-rw-r--r-- | src/plugins/cairo/libdecor-cairo.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/plugins/cairo/libdecor-cairo.c b/src/plugins/cairo/libdecor-cairo.c index 6113066..8d2ef14 100644 --- a/src/plugins/cairo/libdecor-cairo.c +++ b/src/plugins/cairo/libdecor-cairo.c @@ -398,12 +398,15 @@ libdecor_plugin_cairo_destroy(struct libdecor_plugin *plugin) free(plugin_cairo->cursor_theme_name); - wl_shm_destroy(plugin_cairo->wl_shm); + if (plugin_cairo->wl_shm) + wl_shm_destroy(plugin_cairo->wl_shm); pango_font_description_free(plugin_cairo->font); - wl_compositor_destroy(plugin_cairo->wl_compositor); - wl_subcompositor_destroy(plugin_cairo->wl_subcompositor); + if (plugin_cairo->wl_compositor) + wl_compositor_destroy(plugin_cairo->wl_compositor); + if (plugin_cairo->wl_subcompositor) + wl_subcompositor_destroy(plugin_cairo->wl_subcompositor); libdecor_plugin_release(&plugin_cairo->plugin); free(plugin_cairo); |