From eed660221b720c5318a7c2e1eb66710e3937e561 Mon Sep 17 00:00:00 2001 From: mattvchandler Date: Wed, 1 Sep 2021 09:44:12 -0800 Subject: [PATCH] gallium/osmesa: fix buffer resizing Generate a new buffer if OSMesaMakeCurrent is called with a new size Fix a use-after-free error when the old buffer is destroyed Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/5276 Fixes: 26c6f6cfbb6 ("gallium/osmesa: Remove the broken buffer-reuse scheme.") Reviewed-by: Emma Anholt Part-of: --- src/gallium/frontends/osmesa/osmesa.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/gallium/frontends/osmesa/osmesa.c b/src/gallium/frontends/osmesa/osmesa.c index 9638889..91a250d 100644 --- a/src/gallium/frontends/osmesa/osmesa.c +++ b/src/gallium/frontends/osmesa/osmesa.c @@ -781,8 +781,11 @@ OSMesaMakeCurrent(OSMesaContext osmesa, void *buffer, GLenum type, if (osmesa->current_buffer && (osmesa->current_buffer->visual.color_format != color_format || osmesa->current_buffer->visual.depth_stencil_format != osmesa->depth_stencil_format || - osmesa->current_buffer->visual.accum_format != osmesa->accum_format)) { + osmesa->current_buffer->visual.accum_format != osmesa->accum_format || + osmesa->current_buffer->width != width || + osmesa->current_buffer->height != height)) { osmesa_destroy_buffer(osmesa->current_buffer); + osmesa->current_buffer = NULL; } if (!osmesa->current_buffer) { -- 2.7.4