aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar Simon Ser <contact@emersion.fr>2021-12-21 12:05:05 +0100
committerLibravatar Simon Ser <contact@emersion.fr>2021-12-23 12:16:37 +0100
commitd7867d41c25e0a027a9900f3dde565c6caaa4890 (patch)
treee6289736db177a618568ef0d948a99570ce62d40
parentswaybar: fix errno handling in status_handle_readable (diff)
downloadsway-d7867d41c25e0a027a9900f3dde565c6caaa4890.tar.gz
sway-d7867d41c25e0a027a9900f3dde565c6caaa4890.tar.zst
sway-d7867d41c25e0a027a9900f3dde565c6caaa4890.zip
Add cairo_image_surface_create error handling
cairo_image_surface_create can fail, e.g. when running out of memory or when the size is too big. Avoid crashing in this case. Closes: https://github.com/swaywm/sway/issues/6531 (cherry picked from commit 59aebaa5f9f3afe9cdfbb0d37c4dc631690da3b9)
-rw-r--r--sway/tree/container.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/sway/tree/container.c b/sway/tree/container.c
index 132b6819..e5149fb6 100644
--- a/sway/tree/container.c
+++ b/sway/tree/container.c
@@ -536,6 +536,13 @@ static void render_titlebar_text_texture(struct sway_output *output,
536 536
537 cairo_surface_t *surface = cairo_image_surface_create( 537 cairo_surface_t *surface = cairo_image_surface_create(
538 CAIRO_FORMAT_ARGB32, width, height); 538 CAIRO_FORMAT_ARGB32, width, height);
539 cairo_status_t status = cairo_surface_status(surface);
540 if (status != CAIRO_STATUS_SUCCESS) {
541 sway_log(SWAY_ERROR, "cairo_image_surface_create failed: %s",
542 cairo_status_to_string(status));
543 return;
544 }
545
539 cairo_t *cairo = cairo_create(surface); 546 cairo_t *cairo = cairo_create(surface);
540 cairo_set_antialias(cairo, CAIRO_ANTIALIAS_BEST); 547 cairo_set_antialias(cairo, CAIRO_ANTIALIAS_BEST);
541 cairo_set_font_options(cairo, fo); 548 cairo_set_font_options(cairo, fo);