1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/gfx/cairo/quartz-check-imageSurfaceEquiv.patch Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,36 @@ 1.4 +From: Daniel Holbert <dholbert@cs.stanford.edu> 1.5 +Bug 612662 patch 3: Drop cairo_quartz_surface_t's "imageSurfaceEquiv" member if we fail to create it. r=roc a=blocking-final+ 1.6 + 1.7 +diff --git a/gfx/cairo/cairo/src/cairo-quartz-surface.c b/gfx/cairo/cairo/src/cairo-quartz-surface.c 1.8 +--- a/gfx/cairo/cairo/src/cairo-quartz-surface.c 1.9 ++++ b/gfx/cairo/cairo/src/cairo-quartz-surface.c 1.10 +@@ -3152,17 +3152,28 @@ cairo_quartz_surface_create (cairo_forma 1.11 + if (surf->base.status) { 1.12 + CGContextRelease (cgc); 1.13 + free (imageData); 1.14 + // create_internal will have set an error 1.15 + return (cairo_surface_t*) surf; 1.16 + } 1.17 + 1.18 + surf->imageData = imageData; 1.19 +- surf->imageSurfaceEquiv = cairo_image_surface_create_for_data (imageData, format, width, height, stride); 1.20 ++ 1.21 ++ cairo_surface_t* tmpImageSurfaceEquiv = 1.22 ++ cairo_image_surface_create_for_data (imageData, format, 1.23 ++ width, height, stride); 1.24 ++ 1.25 ++ if (cairo_surface_status (tmpImageSurfaceEquiv)) { 1.26 ++ // Tried & failed to create an imageSurfaceEquiv! 1.27 ++ cairo_surface_destroy (tmpImageSurfaceEquiv); 1.28 ++ surf->imageSurfaceEquiv = NULL; 1.29 ++ } else { 1.30 ++ surf->imageSurfaceEquiv = tmpImageSurfaceEquiv; 1.31 ++ } 1.32 + 1.33 + return (cairo_surface_t *) surf; 1.34 + } 1.35 + 1.36 + /** 1.37 + * cairo_quartz_surface_get_cg_context 1.38 + * @surface: the Cairo Quartz surface 1.39 + *