summaryrefslogtreecommitdiff
path: root/source/fitz/draw-device.c
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 /source/fitz/draw-device.c
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.
Diffstat (limited to 'source/fitz/draw-device.c')
-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;