Guard against integer overflow when classifying transfer functions

Bug: chromium:1016183
Change-Id: I9ad5a18a5941661dbd88963d70a043cbe5dcc470
Reviewed-on: https://skia-review.googlesource.com/c/skcms/+/251245
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
diff --git a/skcms.cc b/skcms.cc
index 6b4d87b..99b2d87 100644
--- a/skcms.cc
+++ b/skcms.cc
@@ -137,10 +137,10 @@
                                                        , TF_HLGish* hlg = nullptr) {
     if (tf.g < 0 && (int)tf.g == tf.g) {
         // TODO: sanity checks for PQ/HLG like we do for sRGBish.
-        switch (-(int)tf.g) {
-            case PQish:     if (pq ) { memcpy(pq , &tf.a, sizeof(*pq )); } return PQish;
-            case HLGish:    if (hlg) { memcpy(hlg, &tf.a, sizeof(*hlg)); } return HLGish;
-            case HLGinvish: if (hlg) { memcpy(hlg, &tf.a, sizeof(*hlg)); } return HLGinvish;
+        switch ((int)tf.g) {
+            case -PQish:     if (pq ) { memcpy(pq , &tf.a, sizeof(*pq )); } return PQish;
+            case -HLGish:    if (hlg) { memcpy(hlg, &tf.a, sizeof(*hlg)); } return HLGish;
+            case -HLGinvish: if (hlg) { memcpy(hlg, &tf.a, sizeof(*hlg)); } return HLGinvish;
         }
         return Bad;
     }