diff options
author | Robin Watts <robin.watts@artifex.com> | 2012-01-13 15:56:42 +0000 |
---|---|---|
committer | Robin Watts <robin.watts@artifex.com> | 2012-01-13 15:56:42 +0000 |
commit | 13f1a6f620c8ce2bc0c3a213ac213338d656089d (patch) | |
tree | 3c2c494162fcce165ff4e20a1447b5706f3a0ff7 | |
parent | 41fd76e00aecd75f2baf078397b46335c582e46b (diff) | |
download | mupdf-13f1a6f620c8ce2bc0c3a213ac213338d656089d.tar.xz |
Clipping stack handling tweaks in dev_list.
Thanks to Zeniko for spotting these problems.
-rw-r--r-- | fitz/dev_list.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/fitz/dev_list.c b/fitz/dev_list.c index c1822227..0c273c57 100644 --- a/fitz/dev_list.c +++ b/fitz/dev_list.c @@ -131,7 +131,7 @@ fz_append_display_node(fz_display_list *list, fz_display_node *node) break; case FZ_CMD_BEGIN_TILE: list->tiled++; - if (list->top > 0 && list->top < STACK_SIZE) + if (list->top > 0 && list->top <= STACK_SIZE) { list->stack[list->top-1].rect = fz_infinite_rect; } @@ -637,13 +637,17 @@ fz_execute_display_list(fz_display_list *list, fz_device *dev, fz_matrix top_ctm { case FZ_CMD_CLIP_PATH: case FZ_CMD_CLIP_STROKE_PATH: - case FZ_CMD_CLIP_TEXT: case FZ_CMD_CLIP_STROKE_TEXT: case FZ_CMD_CLIP_IMAGE_MASK: case FZ_CMD_BEGIN_MASK: case FZ_CMD_BEGIN_GROUP: clipped++; continue; + case FZ_CMD_CLIP_TEXT: + /* Accumulated text has no extra pops */ + if (node->flag != 2) + clipped++; + continue; case FZ_CMD_POP_CLIP: case FZ_CMD_END_GROUP: if (!clipped) |