From f6c46d9473e40d4a3363c96e1fc7fffc81ed12e7 Mon Sep 17 00:00:00 2001 From: Sahil Vij Date: Fri, 7 Aug 2015 18:01:18 -0700 Subject: [PATCH] gl: Fix bug in _cairo_gl_pattern_texture_setup() The memory allocated to "image" at line 298 is not freed before moving to label fail at line 305 and 314. This patch takes care of this memory leak in above mentioned cases. Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=91537 Signed-off-by: Sahil Vij Reviewed-by: Bryce Harrington --- src/cairo-gl-operand.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/cairo-gl-operand.c b/src/cairo-gl-operand.c index 401574717..1d1465a0b 100644 --- a/src/cairo-gl-operand.c +++ b/src/cairo-gl-operand.c @@ -301,8 +301,10 @@ _cairo_gl_pattern_texture_setup (cairo_gl_operand_t *operand, so we need to release this device while we paint it to the image. */ if (src_is_gl_surface) { status = _cairo_gl_context_release (ctx, status); - if (unlikely (status)) + if (unlikely (status)) { + _cairo_surface_unmap_image (&surface->base, image); goto fail; + } } status = _cairo_surface_offset_paint (&image->base, extents->x, extents->y, @@ -310,8 +312,10 @@ _cairo_gl_pattern_texture_setup (cairo_gl_operand_t *operand, if (src_is_gl_surface) { status = _cairo_gl_context_acquire (dst->base.device, &ctx); - if (unlikely (status)) + if (unlikely (status)) { + _cairo_surface_unmap_image (&surface->base, image); goto fail; + } } status = _cairo_surface_unmap_image (&surface->base, image);