summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin Watts <robin.watts@artifex.com>2017-10-30 16:06:35 +0000
committerRobin Watts <robin.watts@artifex.com>2017-10-30 16:29:55 +0000
commit80ef17d3386280e05287d61f94677d4b79103cf4 (patch)
tree6041d88fdeff995c4381a6706a7d685bab28bc29
parentec07e5377383b36a9fe714a1ad15b70b5df8a4a3 (diff)
downloadmupdf-80ef17d3386280e05287d61f94677d4b79103cf4.tar.xz
Avoid UMR in fz_copy_pixmap_area_converting_seps.
When mapping spots down to process colors, don't try to map disabled spots.
-rw-r--r--source/fitz/separation.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/source/fitz/separation.c b/source/fitz/separation.c
index fd86b1df..04ee5ebb 100644
--- a/source/fitz/separation.c
+++ b/source/fitz/separation.c
@@ -759,15 +759,19 @@ fz_copy_pixmap_area_converting_seps(fz_context *ctx, fz_pixmap *dst, fz_pixmap *
* remain unmapped? */
if (unmapped)
{
+ int m;
/* Still need to handle mapping 'lost' spots down to process colors */
- for (i = 0; i < sseps_n; i++)
+ for (i = -1, m = 0; m < sseps_n; m++)
{
float convert[FZ_MAX_COLORS];
- if (mapped[i])
+ if (mapped[m])
continue;
- /* Src spot i is not mapped. We need to convert that down. */
- fz_separation_equivalent(ctx, sseps, i, color_params, dst->colorspace, proof_cs, convert);
+ if (fz_separation_current_behavior(ctx, sseps, m) != FZ_SEPARATION_SPOT)
+ continue;
+ i++;
+ /* Src spot m (the i'th one) is not mapped. We need to convert that down. */
+ fz_separation_equivalent(ctx, sseps, m, color_params, dst->colorspace, proof_cs, convert);
if (fz_colorspace_is_subtractive(ctx, dst->colorspace))
{