From 597dd24ddcc763281c82790b7677e54dc2db8f92 Mon Sep 17 00:00:00 2001 From: Chris Wilson Date: Wed, 3 Feb 2010 08:53:44 +0000 Subject: [PATCH] drm/i915: Free potential leak of cloned textures. --- src/drm/cairo-drm-i915-shader.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/drm/cairo-drm-i915-shader.c b/src/drm/cairo-drm-i915-shader.c index 059a205f1..ab61947ad 100644 --- a/src/drm/cairo-drm-i915-shader.c +++ b/src/drm/cairo-drm-i915-shader.c @@ -1362,6 +1362,7 @@ i915_shader_acquire_surface (i915_shader_t *shader, cairo_filter_t filter; cairo_matrix_t m; int src_x = 0, src_y = 0; + cairo_surface_t *free_me = NULL; cairo_status_t status; assert (src->type.fragment == (i915_fragment_shader_t) -1); @@ -1501,6 +1502,8 @@ i915_shader_acquire_surface (i915_shader_t *shader, _cairo_surface_release_source_image (surface, image, image_extra); if (unlikely (status)) return status; + + free_me = &s->intel.drm.base; } src->type.fragment = FS_TEXTURE; @@ -1558,6 +1561,9 @@ i915_shader_acquire_surface (i915_shader_t *shader, cairo_matrix_init_scale (&m, 1. / surface_width, 1. / surface_height); cairo_matrix_multiply (&src->base.matrix, &src->base.matrix, &m); + if (free_me != NULL) + cairo_surface_destroy (free_me); + return CAIRO_STATUS_SUCCESS; }