diff options
-rw-r--r-- | uxa/uxa-accel.c | 8 | ||||
-rw-r--r-- | uxa/uxa-render.c | 2 |
2 files changed, 10 insertions, 0 deletions
diff --git a/uxa/uxa-accel.c b/uxa/uxa-accel.c index a5066c8e..0650ac2a 100644 --- a/uxa/uxa-accel.c +++ b/uxa/uxa-accel.c @@ -120,6 +120,10 @@ uxa_fill_spans(DrawablePtr pDrawable, GCPtr pGC, int n, solid = uxa_acquire_solid(screen, src->pSourcePict); FreePicture(src, 0); + if (!solid) { + FreePicture(dst, 0); + goto solid; + } src = solid; src_pixmap = uxa_get_offscreen_pixmap(src->pDrawable, @@ -1110,6 +1114,10 @@ try_solid: solid = uxa_acquire_solid(screen, src->pSourcePict); FreePicture(src, 0); + if (!solid) { + FreePicture(dst, 0); + goto err; + } src = solid; src_pixmap = uxa_get_offscreen_pixmap(src->pDrawable, diff --git a/uxa/uxa-render.c b/uxa/uxa-render.c index 02bfa039..0f06e822 100644 --- a/uxa/uxa-render.c +++ b/uxa/uxa-render.c @@ -1061,6 +1061,8 @@ try_solid: int src_off_x, src_off_y; solid = uxa_acquire_solid(screen, src->pSourcePict); + if (!solid) + goto err_src; FreePicture(src, 0); src = solid; |