summaryrefslogtreecommitdiff
path: root/media-libs/lcms/files/lcms-2.13-grayscale-regression.patch
blob: d1ce0483ee6fc3192fd06c165425e1a20d91adee (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
https://github.com/mm2/Little-CMS/commit/fdbfb7694f9d7048d53674b79ddfc38068bfdaf7
https://bugs.gentoo.org/832520

From: Marti Maria <marti.maria@littlecms.com>
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