summaryrefslogtreecommitdiff
path: root/src/cairo-xlib-source.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/cairo-xlib-source.c')
-rw-r--r--src/cairo-xlib-source.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/cairo-xlib-source.c b/src/cairo-xlib-source.c
index 24290f73..ca552785 100644
--- a/src/cairo-xlib-source.c
+++ b/src/cairo-xlib-source.c
@@ -1035,7 +1035,13 @@ surface_source (cairo_xlib_surface_t *dst,
status = _cairo_surface_unmap_image (&xsrc->base, image);
if (unlikely (status)) {
- cairo_surface_destroy (src);
+ cairo_surface_destroy (&xsrc->base);
+ return _cairo_surface_create_in_error (status);
+ }
+
+ status = _cairo_xlib_surface_put_shm (xsrc);
+ if (unlikely (status)) {
+ cairo_surface_destroy (&xsrc->base);
return _cairo_surface_create_in_error (status);
}
}