Fuzzer fix for overflow in some Lut8 profiles.
authorraftias <raftias@google.com>
Mon, 28 Nov 2016 16:30:18 +0000 (11:30 -0500)
committerSkia Commit-Bot <skia-commit-bot@chromium.org>
Mon, 28 Nov 2016 17:11:44 +0000 (17:11 +0000)
Bug(?) in the tetrahedral interpolation causes output values to go out
of range a bit (1.035/1.0) in the upper range. We will just clamp for
now as a temporary fix.

BUG=668784

Change-Id: I78dd90da7174133e647b1c6c6e914dbde5de123c
Reviewed-on: https://skia-review.googlesource.com/5228
Reviewed-by: Matt Sarett <msarett@google.com>
Commit-Queue: Robert Aftias <raftias@google.com>

src/core/SkColorLookUpTable.cpp

index 73f3e88..76e0bca 100644 (file)
@@ -92,6 +92,13 @@ void SkColorLookUpTable::interp3D(float dst[3], float src[3]) const {
             }
         }
 
+        // TODO(raftias): Figure out why this is going out of range (up to 1.0359!)
+        if (dst[i] > 1.f) {
+            dst[i] = 1.f;
+        } else if (dst[i] < 0.f) {
+            dst[i] = 0.f;
+        }
+
         // Increment the table ptr in order to handle the next component.
         // Note that this is the how table is designed: all of nXXX
         // variables are multiples of 3 because there are 3 output