summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Rasmussen <sebras@gmail.com>2018-03-02 12:52:08 +0800
committerSebastian Rasmussen <sebras@gmail.com>2018-03-16 03:43:36 +0800
commit3cc27abcef30760d655bf00fe46caac87b2e831b (patch)
treee2139e013d708b85dc957347bf3108f1acb13cdc
parentace9e69017c08e1e4ce5912014177414c0382004 (diff)
downloadmupdf-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.
-rw-r--r--source/fitz/draw-device.c6
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;