From 0a27fbb19d20428aa53761dff296472ee141511f Mon Sep 17 00:00:00 2001 From: Marti Maria Date: Tue, 2 Jun 2020 11:42:33 +0200 Subject: Fix Lut16 matrix Matrix should always be 3x3 --- src/cmstypes.c | 17 +++++++---------- utils/transicc/transicc.c | 2 +- 2 files changed, 8 insertions(+), 11 deletions(-) diff --git a/src/cmstypes.c b/src/cmstypes.c index abcce31..b780436 100644 --- a/src/cmstypes.c +++ b/src/cmstypes.c @@ -2138,9 +2138,9 @@ Error: // Some empty defaults are created for missing parts static -cmsBool Type_LUT16_Write(struct _cms_typehandler_struct* self, cmsIOHANDLER* io, void* Ptr, cmsUInt32Number nItems) +cmsBool Type_LUT16_Write(struct _cms_typehandler_struct* self, cmsIOHANDLER* io, void* Ptr, cmsUInt32Number nItems) { - cmsUInt32Number nTabSize, n; + cmsUInt32Number nTabSize; cmsPipeline* NewLUT = (cmsPipeline*) Ptr; cmsStage* mpe; _cmsStageToneCurvesData* PreMPE = NULL, *PostMPE = NULL; @@ -2153,6 +2153,7 @@ cmsBool Type_LUT16_Write(struct _cms_typehandler_struct* self, cmsIOHANDLER* io if (mpe != NULL && mpe ->Type == cmsSigMatrixElemType) { MatMPE = (_cmsStageMatrixData*) mpe ->Data; + if (mpe->InputChannels != 3 || mpe->OutputChannels != 3) return FALSE; mpe = mpe -> Next; } @@ -2190,21 +2191,17 @@ cmsBool Type_LUT16_Write(struct _cms_typehandler_struct* self, cmsIOHANDLER* io if (!_cmsWriteUInt8Number(io, (cmsUInt8Number) OutputChannels)) return FALSE; if (!_cmsWriteUInt8Number(io, (cmsUInt8Number) clutPoints)) return FALSE; if (!_cmsWriteUInt8Number(io, 0)) return FALSE; // Padding - - n = NewLUT->InputChannels * NewLUT->OutputChannels; - + if (MatMPE != NULL) { - - for (i = 0; i < n; i++) + + for (i = 0; i < 9; i++) { if (!_cmsWrite15Fixed16Number(io, MatMPE->Double[i])) return FALSE; } } else { - - if (n != 9) return FALSE; - + if (!_cmsWrite15Fixed16Number(io, 1)) return FALSE; if (!_cmsWrite15Fixed16Number(io, 0)) return FALSE; if (!_cmsWrite15Fixed16Number(io, 0)) return FALSE; diff --git a/utils/transicc/transicc.c b/utils/transicc/transicc.c index 2151f39..1dc67f8 100644 --- a/utils/transicc/transicc.c +++ b/utils/transicc/transicc.c @@ -102,7 +102,7 @@ void Help(void) fprintf(stderr, "\t%cw - use 16 bits\n", SW); fprintf(stderr, "\t%cx - Hexadecimal\n\n", SW); - fprintf(stderr, "%cs - bounded mode (clip negatives and highliths)\n", SW); + fprintf(stderr, "%cs - bounded mode (clip negatives and highlights)\n", SW); fprintf(stderr, "%cq - Quantize (round decimals)\n\n", SW); fprintf(stderr, "%ci - Input profile (defaults to sRGB)\n", SW); -- cgit v1.2.1