From f3ae783c9c81106bdb3aa2d15b848d131c39cd93 Mon Sep 17 00:00:00 2001 From: Chris Wilson Date: Fri, 5 Oct 2007 09:42:23 +0100 Subject: [PATCH] [cairo-surface-fallback] Release the acquired image on error. Add _cairo_surface_release_source_image() to the error paths. --- src/cairo-surface-fallback.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/cairo-surface-fallback.c b/src/cairo-surface-fallback.c index e9a77add1..4abeaf91f 100644 --- a/src/cairo-surface-fallback.c +++ b/src/cairo-surface-fallback.c @@ -1049,8 +1049,11 @@ _cairo_surface_fallback_snapshot (cairo_surface_t *surface) snapshot = cairo_image_surface_create (image->format, image->width, image->height); - if (cairo_surface_status (snapshot)) + if (cairo_surface_status (snapshot)) { + _cairo_surface_release_source_image (surface, + image, &image_extra); return snapshot; + } _cairo_pattern_init_for_surface (&pattern.surface, &image->base); @@ -1065,14 +1068,14 @@ _cairo_surface_fallback_snapshot (cairo_surface_t *surface) image->height); _cairo_pattern_fini (&pattern.base); + _cairo_surface_release_source_image (surface, + image, &image_extra); + if (status) { cairo_surface_destroy (snapshot); return (cairo_surface_t *) &_cairo_surface_nil; } - _cairo_surface_release_source_image (surface, - image, image_extra); - snapshot->device_transform = surface->device_transform; snapshot->device_transform_inverse = surface->device_transform_inverse;