diff options
author | Marti Maria <info@littlecms.com> | 2011-12-14 14:41:13 +0100 |
---|---|---|
committer | Marti Maria <info@littlecms.com> | 2011-12-14 14:41:13 +0100 |
commit | 806bd807d30c440e016c7829d4f20ad7fa0e6c11 (patch) | |
tree | ee36e120baaee9b77657d68e11d6b144ccffffc5 /src/cmstypes.c | |
parent | 5b468a68fc12bb44286ad1a87b156f99ff52c2b5 (diff) | |
download | lcms2-806bd807d30c440e016c7829d4f20ad7fa0e6c11.tar.gz |
Minor modifications for 2.3
Diffstat (limited to 'src/cmstypes.c')
-rw-r--r-- | src/cmstypes.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/src/cmstypes.c b/src/cmstypes.c index e204727..4548c32 100644 --- a/src/cmstypes.c +++ b/src/cmstypes.c @@ -1221,17 +1221,23 @@ static cmsBool Type_ParametricCurve_Write(struct _cms_typehandler_struct* self, cmsIOHANDLER* io, void* Ptr, cmsUInt32Number nItems) { cmsToneCurve* Curve = (cmsToneCurve*) Ptr; - int i, nParams; + int i, nParams, typen; static const int ParamsByType[] = { 0, 1, 3, 4, 5, 7 }; + typen = Curve -> Segments[0].Type; - if (Curve ->nSegments > 1 || Curve -> Segments[0].Type < 1) { + if (Curve ->nSegments > 1 || typen < 1) { - cmsSignalError(self->ContextID, 0, "Multisegment or Inverted parametric curves cannot be written"); + cmsSignalError(self->ContextID, cmsERROR_UNKNOWN_EXTENSION, "Multisegment or Inverted parametric curves cannot be written"); return FALSE; } - nParams = ParamsByType[Curve ->Segments[0].Type]; + if (typen > 5) { + cmsSignalError(self->ContextID, cmsERROR_UNKNOWN_EXTENSION, "Unsupported parametric curve"); + return FALSE; + } + + nParams = ParamsByType[typen]; if (!_cmsWriteUInt16Number(io, (cmsUInt16Number) (Curve ->Segments[0].Type - 1))) return FALSE; if (!_cmsWriteUInt16Number(io, 0)) return FALSE; // Reserved |