diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2012-03-13 11:16:39 +0000 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2012-03-13 11:16:39 +0000 |
commit | d67f02e23e008b21425e319b5c95022348363749 (patch) | |
tree | b5af2b2b1ad822876ccebf5801e19bdf0d570406 /src/cairo-spans-compositor.c | |
parent | 94a9e06a930ba985de461826ea3e64fd7c222bc6 (diff) | |
download | cairo-d67f02e23e008b21425e319b5c95022348363749.tar.gz |
spans-compositor: Only destroy the clip if we made the copy
The extents->clip may be replaced elsewhere and so we cannot assume that
simply because it changed from the stashed value, that it was us that
made that copy. So becareful to only free our copy.
Fixes a double-free of a clip after a complex fallback operation.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Diffstat (limited to 'src/cairo-spans-compositor.c')
-rw-r--r-- | src/cairo-spans-compositor.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/cairo-spans-compositor.c b/src/cairo-spans-compositor.c index e9fedcd4f..70fc1c295 100644 --- a/src/cairo-spans-compositor.c +++ b/src/cairo-spans-compositor.c @@ -984,7 +984,7 @@ _cairo_spans_compositor_stroke (const cairo_compositor_t *_compositor, status = clip_and_composite_polygon (compositor, extents, &polygon, fill_rule, antialias); - if (extents->clip != saved_clip) { + if (extents->is_bounded) { _cairo_clip_destroy (extents->clip); extents->clip = saved_clip; } @@ -1056,7 +1056,7 @@ _cairo_spans_compositor_fill (const cairo_compositor_t *_compositor, status = clip_and_composite_polygon (compositor, extents, &polygon, fill_rule, antialias); - if (extents->clip != saved_clip) { + if (extents->is_bounded) { _cairo_clip_destroy (extents->clip); extents->clip = saved_clip; } |