summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEmmanuele Bassi <ebassi@gnome.org>2021-01-20 19:10:54 +0000
committerEmmanuele Bassi <ebassi@gnome.org>2021-01-20 19:10:54 +0000
commit75f2d7583f5485b0a47326d4dac3dfb13b9307bc (patch)
treee51580a2bed57d54ce67d8daf44fcaa9efe3adbd
parenta1216599ff6b39bca3e936fbf5d8442d3008eb5c (diff)
downloadgtk+-75f2d7583f5485b0a47326d4dac3dfb13b9307bc.tar.gz
Abort if the shared memory pool cannot be created
If we cannot allocate memory, we cannot create any windowing system surface. There's no coming back from that. Fixes: #3607
-rw-r--r--gdk/wayland/gdkdisplay-wayland.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/gdk/wayland/gdkdisplay-wayland.c b/gdk/wayland/gdkdisplay-wayland.c
index f5ea972fa2..3acc10ed50 100644
--- a/gdk/wayland/gdkdisplay-wayland.c
+++ b/gdk/wayland/gdkdisplay-wayland.c
@@ -1350,21 +1350,23 @@ _gdk_wayland_display_create_shm_surface (GdkWaylandDisplay *display,
data->buffer = NULL;
data->scale = scale;
- stride = cairo_format_stride_for_width (CAIRO_FORMAT_ARGB32, width*scale);
+ stride = cairo_format_stride_for_width (CAIRO_FORMAT_ARGB32, width * scale);
data->pool = create_shm_pool (display->shm,
- height*scale*stride,
+ height * scale * stride,
&data->buf_length,
&data->buf);
+ if (G_UNLIKELY (data->pool == NULL))
+ g_error ("Unable to create shared memory pool");
surface = cairo_image_surface_create_for_data (data->buf,
CAIRO_FORMAT_ARGB32,
- width*scale,
- height*scale,
+ width * scale,
+ height * scale,
stride);
data->buffer = wl_shm_pool_create_buffer (data->pool, 0,
- width*scale, height*scale,
+ width * scale, height * scale,
stride, WL_SHM_FORMAT_ARGB8888);
cairo_surface_set_user_data (surface, &gdk_wayland_shm_surface_cairo_key,