[cairo-commit] src/cairo-surface.c

Carl Worth cworth at kemper.freedesktop.org
Mon Mar 19 16:51:35 PDT 2007

 src/cairo-surface.c |    4 ++++
 1 files changed, 4 insertions(+)

New commits:
diff-tree 725a4de42dfaf0d9d98447c9fbefed99fbf99ac1 (from eb472a9d9cbaea754907a261b459693b9c27ac79)
Author: Carl Worth <cworth at cworth.org>
Date:   Mon Mar 19 16:50:55 2007 -0700

    Propagate a nil surface out of _cairo_surface_create_similar_scratch
    We detect an error in the surface before calling into private surface-modifying
    functions, (such as _cairo_surface_set_font_options), that don't have the
    nil-surface protection of public functions.
    This should fix the problem reported (again) in this bug report:
    	cairo crashes in cairo_create_simular if nil surface returned by other->backend->create_similar
    Though I haven't succeeded in replicating the bug yet, (perhaps a system
    difference in allowing writes to read-only memory or not, or something
    like that).

diff --git a/src/cairo-surface.c b/src/cairo-surface.c
index 516f30d..92efa00 100644
--- a/src/cairo-surface.c
+++ b/src/cairo-surface.c
@@ -234,6 +234,10 @@ _cairo_surface_create_similar_scratch (c
     if (surface == NULL)
 	surface = cairo_image_surface_create (format, width, height);
+    /* If any error occurred, then return the nil surface we received. */
+    if (surface->status)
+	return surface;
     cairo_surface_get_font_options (other, &options);
     _cairo_surface_set_font_options (surface, &options);

More information about the cairo-commit mailing list