From 687313e0cbf883019b3db3777a8df1ff0698788e Mon Sep 17 00:00:00 2001 From: Tor Andersson Date: Mon, 7 Feb 2011 16:09:25 +0000 Subject: Ensure that JPX image colorspace matches what is given in the PDF object. --- mupdf/pdf_image.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/mupdf/pdf_image.c b/mupdf/pdf_image.c index 4252a580..9d59d9b2 100644 --- a/mupdf/pdf_image.c +++ b/mupdf/pdf_image.c @@ -308,12 +308,24 @@ pdf_loadjpximage(fz_pixmap **imgp, pdf_xref *xref, fz_obj *dict) obj = fz_dictgets(dict, "ColorSpace"); if (obj) { - fz_dropcolorspace(img->colorspace); + fz_colorspace *original = img->colorspace; img->colorspace = nil; error = pdf_loadcolorspace(&img->colorspace, xref, obj); if (error) + { + fz_dropcolorspace(original); return fz_rethrow(error, "cannot load image colorspace"); + } + + if (original->n != img->colorspace->n) + { + fz_warn("jpeg-2000 colorspace (%s) does not match promised colorspace (%s)", original->name, img->colorspace->name); + fz_dropcolorspace(img->colorspace); + img->colorspace = original; + } + else + fz_dropcolorspace(original); if (!strcmp(img->colorspace->name, "Indexed")) { -- cgit v1.2.3