From 3cc27abcef30760d655bf00fe46caac87b2e831b Mon Sep 17 00:00:00 2001 From: Sebastian Rasmussen Date: Fri, 2 Mar 2018 12:52:08 +0800 Subject: Fix 699087: Get scissor from stack after new entry pushed. Without this fix the stack may be resized and relocated and then the scissor might point to stale memory. --- source/fitz/draw-device.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'source/fitz/draw-device.c') diff --git a/source/fitz/draw-device.c b/source/fitz/draw-device.c index 2ae7354b..7d81e4d3 100644 --- a/source/fitz/draw-device.c +++ b/source/fitz/draw-device.c @@ -751,7 +751,7 @@ fz_draw_clip_path(fz_context *ctx, fz_device *devp, const fz_path *path, int eve fz_draw_state *state = &dev->stack[dev->top]; fz_colorspace *model; fz_irect local_scissor; - fz_irect *scissor_ptr = &state->scissor; + fz_irect *scissor_ptr; if (dev->top == 0 && dev->resolve_spots) (void)push_group_for_separations(ctx, dev, fz_default_color_params(ctx)/* FIXME */, dev->default_cs); @@ -763,6 +763,7 @@ fz_draw_clip_path(fz_context *ctx, fz_device *devp, const fz_path *path, int eve STACK_PUSHED("clip path"); model = state->dest->colorspace; + scissor_ptr = &state->scissor; if (scissor) { fz_rect tscissor = *scissor; @@ -827,7 +828,7 @@ fz_draw_clip_stroke_path(fz_context *ctx, fz_device *devp, const fz_path *path, float aa_level = 2.0f/(fz_rasterizer_graphics_aa_level(rast)+2); float mlw = fz_rasterizer_graphics_min_line_width(rast); fz_irect local_scissor; - fz_irect *scissor_ptr = &state->scissor; + fz_irect *scissor_ptr; if (dev->top == 0 && dev->resolve_spots) (void)push_group_for_separations(ctx, dev, fz_default_color_params(ctx) /* FIXME */, dev->default_cs); @@ -843,6 +844,7 @@ fz_draw_clip_stroke_path(fz_context *ctx, fz_device *devp, const fz_path *path, STACK_PUSHED("clip stroke"); model = state->dest->colorspace; + scissor_ptr = &state->scissor; if (scissor) { fz_rect tscissor = *scissor; -- cgit v1.2.3