https://github.com/mm2/Little-CMS/commit/fdbfb7694f9d7048d53674b79ddfc38068bfdaf7 https://bugs.gentoo.org/832520 From: Marti Maria Date: Sun, 30 Jan 2022 16:56:48 +0100 Subject: [PATCH] Fix for optimisation error on grayscale Thanks to Aaron Boxer for reporting this issue --- a/src/cmsintrp.c +++ b/src/cmsintrp.c @@ -278,10 +278,10 @@ void Eval1Input(CMSREGISTER const cmsUInt16Number Input[], // if last value... if (Input[0] == 0xffff || p16->Domain[0] == 0) { - cmsUInt16Number y0 = LutTable[p16->Domain[0]]; - + cmsUInt32Number y0 = p16->Domain[0] * p16->opta[0]; + for (OutChan = 0; OutChan < p16->nOutputs; OutChan++) { - Output[OutChan] = y0; + Output[OutChan] = LutTable[y0 + OutChan]; } } else @@ -324,10 +324,10 @@ void Eval1InputFloat(const cmsFloat32Number Value[], // if last value... if (val2 == 1.0 || p->Domain[0] == 0) { - y0 = LutTable[p->Domain[0]]; + cmsUInt32Number start = p->Domain[0] * p->opta[0]; for (OutChan = 0; OutChan < p->nOutputs; OutChan++) { - Output[OutChan] = y0; + Output[OutChan] = LutTable[start + OutChan]; } } else