From 304aacdb7a1dfbe92e4b0e1a419a872bd3ba6113 Mon Sep 17 00:00:00 2001 From: feeptr Date: Thu, 23 Sep 2021 22:17:43 +0000 Subject: [PATCH] fix crashes when resizing after CSD enabled at runtime with csd.size = 0 --- render.c | 3 ++- shm.c | 4 +++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/render.c b/render.c index b9acc8e1..c4b1b4c8 100644 --- a/render.c +++ b/render.c @@ -1673,7 +1673,8 @@ render_csd_title(struct terminal *term, const struct csd_data *info, xassert(term->window->csd_mode == CSD_YES); struct wl_surf_subsurf *surf = &term->window->csd.surface[CSD_SURF_TITLE]; - xassert(info->width > 0 && info->height > 0); + if (info->width == 0 || info->height == 0) + return; xassert(info->width % term->scale == 0); xassert(info->height % term->scale == 0); diff --git a/shm.c b/shm.c index 60e45d4d..9db7e745 100644 --- a/shm.c +++ b/shm.c @@ -322,6 +322,8 @@ get_new_buffers(struct buffer_chain *chain, size_t count, sizes[i] = stride[i] * heights[i]; total_size += sizes[i]; } + if (total_size == 0) + return; int pool_fd = -1; @@ -486,7 +488,7 @@ get_new_buffers(struct buffer_chain *chain, size_t count, } #endif - if (!shm_can_scroll(bufs[0])) { + if (!(bufs[0] && shm_can_scroll(bufs[0]))) { /* We only need to keep the pool FD open if we’re going to SHM * scroll it */ close(pool_fd);