Diffstat (limited to 'noncore/unsupported/qpdf/xpdf/Function.cc') (more/less context) (ignore whitespace changes)
-rw-r--r-- | noncore/unsupported/qpdf/xpdf/Function.cc | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/noncore/unsupported/qpdf/xpdf/Function.cc b/noncore/unsupported/qpdf/xpdf/Function.cc index 815cc89..ebf3718 100644 --- a/noncore/unsupported/qpdf/xpdf/Function.cc +++ b/noncore/unsupported/qpdf/xpdf/Function.cc @@ -3,5 +3,5 @@ // Function.cc // -// Copyright 2001 Derek B. Noonburg +// Copyright 2001-2002 Glyph & Cog, LLC // //======================================================================== @@ -416,5 +416,4 @@ ExponentialFunction::ExponentialFunction(Object *funcObj, Dict *dict) { ok = gFalse; - hasN = gFalse; //----- initialize the generic stuff @@ -426,4 +425,5 @@ ExponentialFunction::ExponentialFunction(Object *funcObj, Dict *dict) { goto err1; } + hasN = hasRange; //----- default values @@ -437,4 +437,5 @@ ExponentialFunction::ExponentialFunction(Object *funcObj, Dict *dict) { if (!hasN) { n = obj1.arrayGetLength(); + hasN = gTrue; } else if (obj1.arrayGetLength() != n) { error(-1, "Function's C0 array is wrong length"); @@ -457,4 +458,5 @@ ExponentialFunction::ExponentialFunction(Object *funcObj, Dict *dict) { if (!hasN) { n = obj1.arrayGetLength(); + hasN = gTrue; } else if (obj1.arrayGetLength() != n) { error(-1, "Function's C1 array is wrong length"); @@ -481,4 +483,11 @@ ExponentialFunction::ExponentialFunction(Object *funcObj, Dict *dict) { obj1.free(); + // this isn't supposed to happen, but I've run into (broken) PDF + // files where it does + if (!hasN) { + error(-1, "Exponential function does not define number of output values"); + n = 1; + } + ok = gTrue; return; |