diff options
author | Sebastian Rasmussen <sebras@gmail.com> | 2018-03-02 12:52:08 +0800 |
---|---|---|
committer | Sebastian Rasmussen <sebras@gmail.com> | 2018-03-16 03:43:36 +0800 |
commit | 3cc27abcef30760d655bf00fe46caac87b2e831b (patch) | |
tree | e2139e013d708b85dc957347bf3108f1acb13cdc /source/fitz | |
parent | ace9e69017c08e1e4ce5912014177414c0382004 (diff) | |
download | mupdf-3cc27abcef30760d655bf00fe46caac87b2e831b.tar.xz |
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.
Diffstat (limited to 'source/fitz')
-rw-r--r-- | source/fitz/draw-device.c | 6 |
1 files changed, 4 insertions, 2 deletions
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; |