summaryrefslogtreecommitdiff
path: root/media-libs/lcms/files/lcms-2.13-grayscale-regression.patch
diff options
context:
space:
mode:
Diffstat (limited to 'media-libs/lcms/files/lcms-2.13-grayscale-regression.patch')
-rw-r--r--media-libs/lcms/files/lcms-2.13-grayscale-regression.patch38
1 files changed, 38 insertions, 0 deletions
diff --git a/media-libs/lcms/files/lcms-2.13-grayscale-regression.patch b/media-libs/lcms/files/lcms-2.13-grayscale-regression.patch
new file mode 100644
index 000000000000..d1ce0483ee6f
--- /dev/null
+++ b/media-libs/lcms/files/lcms-2.13-grayscale-regression.patch
@@ -0,0 +1,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
+