gfx/cairo/win32-canvas-glyph-position.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.

     1 diff --git a/gfx/cairo/cairo/src/cairo-win32-font.c b/gfx/cairo/cairo/src/cairo-win32-font.c
     2 --- a/gfx/cairo/cairo/src/cairo-win32-font.c
     3 +++ b/gfx/cairo/cairo/src/cairo-win32-font.c
     4 @@ -1182,22 +1182,22 @@ _add_glyph (cairo_glyph_state_t *state,
     5      if (state->glyphs.num_elements > 0) {
     6  	int dx;
     8  	if (logical_y != state->last_y) {
     9  	    status = _flush_glyphs (state);
    10  	    if (status)
    11  		return status;
    12  	    state->start_x = logical_x;
    13 +	} else {
    14 +	    dx = logical_x - state->last_x;
    15 +	    status = _cairo_array_append (&state->dx, &dx);
    16 +	    if (status)
    17 +		return status;
    18  	}
    19 -
    20 -	dx = logical_x - state->last_x;
    21 -	status = _cairo_array_append (&state->dx, &dx);
    22 -	if (status)
    23 -	    return status;
    24      } else {
    25  	state->start_x = logical_x;
    26      }
    28      state->last_x = logical_x;
    29      state->last_y = logical_y;
    31      status = _cairo_array_append (&state->glyphs, &glyph_index);

mercurial