summaryrefslogtreecommitdiff
path: root/src/cairo-xlib-surface.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/cairo-xlib-surface.c')
-rw-r--r--src/cairo-xlib-surface.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/src/cairo-xlib-surface.c b/src/cairo-xlib-surface.c
index ee3e93076..a9b20a2c9 100644
--- a/src/cairo-xlib-surface.c
+++ b/src/cairo-xlib-surface.c
@@ -213,6 +213,10 @@ _cairo_xlib_surface_create_similar (void *abstract_src,
cairo_xlib_surface_create_with_xrender_format (dpy, pix, src->screen,
xrender_format,
width, height);
+ if (surface->base.status) {
+ _cairo_error (CAIRO_STATUS_NO_MEMORY);
+ return (cairo_surface_t*) &_cairo_surface_nil;
+ }
surface->owns_pixmap = TRUE;
@@ -669,7 +673,7 @@ _cairo_xlib_surface_clone_similar (void *abstract_surface,
_cairo_xlib_surface_create_similar (surface, content,
image_src->width, image_src->height);
if (clone->base.status)
- return clone->base.status;
+ return CAIRO_STATUS_NO_MEMORY;
_draw_image_surface (clone, image_src, 0, 0);
@@ -1547,8 +1551,10 @@ cairo_xlib_surface_create (Display *dpy,
{
Screen *screen = _cairo_xlib_screen_from_visual (dpy, visual);
- if (screen == NULL)
- return _cairo_surface_create_in_error (CAIRO_STATUS_INVALID_VISUAL);
+ if (screen == NULL) {
+ _cairo_error (CAIRO_STATUS_INVALID_VISUAL);
+ return (cairo_surface_t*) &_cairo_surface_nil;
+ }
return _cairo_xlib_surface_create_internal (dpy, drawable, screen,
visual, NULL, width, height, 0);