diff options
Diffstat (limited to 'src/cairo-xlib-source.c')
-rw-r--r-- | src/cairo-xlib-source.c | 8 |
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); } } |