summaryrefslogtreecommitdiff
path: root/src/cairo-spans-compositor.c
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2012-03-13 11:16:39 +0000
committerChris Wilson <chris@chris-wilson.co.uk>2012-03-13 11:16:39 +0000
commitd67f02e23e008b21425e319b5c95022348363749 (patch)
treeb5af2b2b1ad822876ccebf5801e19bdf0d570406 /src/cairo-spans-compositor.c
parent94a9e06a930ba985de461826ea3e64fd7c222bc6 (diff)
downloadcairo-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.c4
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;
}