diff options
author | Uli Schlachter <psychon@znc.in> | 2014-03-06 09:45:08 +0100 |
---|---|---|
committer | Uli Schlachter <psychon@znc.in> | 2014-03-06 09:51:56 +0100 |
commit | ed175b2a2bebb6def85133257bc11a875d13b0dd (patch) | |
tree | 3043d683ccddc1523a870dfafef0cc13ee1a412b /src/cairo-clip-boxes.c | |
parent | 3b261bea7d8e8094ff3899aefab6bbc8628a3585 (diff) | |
download | cairo-ed175b2a2bebb6def85133257bc11a875d13b0dd.tar.gz |
clip: Fix handling of special all-clipped cairo_clip_t
_cairo_clip_intersect_box() wasn't checking if it was called with the special,
read-only all-clipped clip and thus could have ended up writing to read-only
memory.
References: https://bugs.freedesktop.org/show_bug.cgi?id=75819
Signed-off-by: Uli Schlachter <psychon@znc.in>
Diffstat (limited to 'src/cairo-clip-boxes.c')
-rw-r--r-- | src/cairo-clip-boxes.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/src/cairo-clip-boxes.c b/src/cairo-clip-boxes.c index 352654f5f..7bcbeb191 100644 --- a/src/cairo-clip-boxes.c +++ b/src/cairo-clip-boxes.c @@ -258,6 +258,9 @@ _cairo_clip_intersect_box (cairo_clip_t *clip, { cairo_rectangle_int_t r; + if (_cairo_clip_is_all_clipped (clip)) + return clip; + _cairo_box_round_to_rectangle (box, &r); if (r.width == 0 || r.height == 0) return _cairo_clip_set_all_clipped (clip); |