summaryrefslogtreecommitdiff
path: root/fitz/dev_list.c
diff options
context:
space:
mode:
authorRobin Watts <robin.watts@artifex.com>2012-01-13 15:56:42 +0000
committerRobin Watts <robin.watts@artifex.com>2012-01-13 15:56:42 +0000
commit13f1a6f620c8ce2bc0c3a213ac213338d656089d (patch)
tree3c2c494162fcce165ff4e20a1447b5706f3a0ff7 /fitz/dev_list.c
parent41fd76e00aecd75f2baf078397b46335c582e46b (diff)
downloadmupdf-13f1a6f620c8ce2bc0c3a213ac213338d656089d.tar.xz
Clipping stack handling tweaks in dev_list.
Thanks to Zeniko for spotting these problems.
Diffstat (limited to 'fitz/dev_list.c')
-rw-r--r--fitz/dev_list.c8
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)