gfx/cairo/quartz-check-imageSurfaceEquiv.patch

Tue, 06 Jan 2015 21:39:09 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Tue, 06 Jan 2015 21:39:09 +0100
branch
TOR_BUG_9701
changeset 8
97036ab72558
permissions
-rw-r--r--

Conditionally force memory storage according to privacy.thirdparty.isolate;
This solves Tor bug #9701, complying with disk avoidance documented in
https://www.torproject.org/projects/torbrowser/design/#disk-avoidance.

michael@0 1 From: Daniel Holbert <dholbert@cs.stanford.edu>
michael@0 2 Bug 612662 patch 3: Drop cairo_quartz_surface_t's "imageSurfaceEquiv" member if we fail to create it. r=roc a=blocking-final+
michael@0 3
michael@0 4 diff --git a/gfx/cairo/cairo/src/cairo-quartz-surface.c b/gfx/cairo/cairo/src/cairo-quartz-surface.c
michael@0 5 --- a/gfx/cairo/cairo/src/cairo-quartz-surface.c
michael@0 6 +++ b/gfx/cairo/cairo/src/cairo-quartz-surface.c
michael@0 7 @@ -3152,17 +3152,28 @@ cairo_quartz_surface_create (cairo_forma
michael@0 8 if (surf->base.status) {
michael@0 9 CGContextRelease (cgc);
michael@0 10 free (imageData);
michael@0 11 // create_internal will have set an error
michael@0 12 return (cairo_surface_t*) surf;
michael@0 13 }
michael@0 14
michael@0 15 surf->imageData = imageData;
michael@0 16 - surf->imageSurfaceEquiv = cairo_image_surface_create_for_data (imageData, format, width, height, stride);
michael@0 17 +
michael@0 18 + cairo_surface_t* tmpImageSurfaceEquiv =
michael@0 19 + cairo_image_surface_create_for_data (imageData, format,
michael@0 20 + width, height, stride);
michael@0 21 +
michael@0 22 + if (cairo_surface_status (tmpImageSurfaceEquiv)) {
michael@0 23 + // Tried & failed to create an imageSurfaceEquiv!
michael@0 24 + cairo_surface_destroy (tmpImageSurfaceEquiv);
michael@0 25 + surf->imageSurfaceEquiv = NULL;
michael@0 26 + } else {
michael@0 27 + surf->imageSurfaceEquiv = tmpImageSurfaceEquiv;
michael@0 28 + }
michael@0 29
michael@0 30 return (cairo_surface_t *) surf;
michael@0 31 }
michael@0 32
michael@0 33 /**
michael@0 34 * cairo_quartz_surface_get_cg_context
michael@0 35 * @surface: the Cairo Quartz surface
michael@0 36 *

mercurial