From 7ba16ef264fc0ecba5d084f916918da59dc60fce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Molinari?= Date: Thu, 31 Aug 2023 14:11:50 +0200 Subject: [PATCH] gl-renderer: Prevent programming errors on damage regions MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit transform_damage() expects a non-empty damage region. Remove compress_bands()'s run-time handling of errors and use asserts to prevent programming errors. Signed-off-by: Loïc Molinari --- libweston/renderer-gl/gl-renderer.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/libweston/renderer-gl/gl-renderer.c b/libweston/renderer-gl/gl-renderer.c index 1bc6e4974..713b37280 100644 --- a/libweston/renderer-gl/gl-renderer.c +++ b/libweston/renderer-gl/gl-renderer.c @@ -1195,10 +1195,7 @@ compress_bands(pixman_box32_t *inrects, int nrects, pixman_box32_t **outrects) pixman_box32_t *out, merge_rect; int i, j, nout; - if (!nrects) { - *outrects = NULL; - return 0; - } + assert(nrects > 0); /* nrects is an upper bound - we're not too worried about * allocating a little extra @@ -1253,7 +1250,7 @@ node_axis_aligned(const struct weston_view *view) /* Transform damage 'region' in global coordinates to damage 'quads' in surface * coordinates. 'quads' and 'nquads' are output arguments set if 'quads' is * NULL, no transformation happens otherwise. Caller must free 'quads' if - * set. + * set. Caller must ensure 'region' is not empty. */ static void transform_damage(const struct weston_paint_node *pnode, @@ -1276,6 +1273,7 @@ transform_damage(const struct weston_paint_node *pnode, if (compress) nrects = compress_bands(rects, nrects, &rects); + assert(nrects > 0); *quads = quads_alloc = malloc(nrects * sizeof *quads_alloc); *nquads = nrects;