diff options
author | Robin Watts <robin.watts@artifex.com> | 2017-10-30 16:06:35 +0000 |
---|---|---|
committer | Robin Watts <robin.watts@artifex.com> | 2017-10-30 16:29:55 +0000 |
commit | 80ef17d3386280e05287d61f94677d4b79103cf4 (patch) | |
tree | 6041d88fdeff995c4381a6706a7d685bab28bc29 /source | |
parent | ec07e5377383b36a9fe714a1ad15b70b5df8a4a3 (diff) | |
download | mupdf-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.
Diffstat (limited to 'source')
-rw-r--r-- | source/fitz/separation.c | 12 |
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)) { |