mozilla-skia-overflow.patch
author Wolfgang Rosenauer <wr@rosenauer.org>
Sun, 13 Nov 2016 16:53:26 +0100
branchfirefox49
changeset 931 c5f980be6e8b
parent 929 9fc2ebe6d7f1
permissions -rw-r--r--
49.0.2
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
929
9fc2ebe6d7f1 Firefox 49.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
     1
# HG changeset patch
9fc2ebe6d7f1 Firefox 49.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
     2
# User Lee Salzman <lsalzman@mozilla.com>
9fc2ebe6d7f1 Firefox 49.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
     3
# Date 1474489725 14400
9fc2ebe6d7f1 Firefox 49.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
     4
#      Wed Sep 21 16:28:45 2016 -0400
9fc2ebe6d7f1 Firefox 49.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
     5
# Node ID 38a427a913b57080374b9966466b8f436ec39eb8
9fc2ebe6d7f1 Firefox 49.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
     6
# Parent  4dfd3f00543d1d7adc3f0f852e6f32fbca6f3420
9fc2ebe6d7f1 Firefox 49.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
     7
fix invalid Sk4f store to SkColor in SkPixmap::erase
9fc2ebe6d7f1 Firefox 49.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
     8
9fc2ebe6d7f1 Firefox 49.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
     9
MozReview-Commit-ID: 840x1nXgYns
9fc2ebe6d7f1 Firefox 49.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    10
9fc2ebe6d7f1 Firefox 49.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    11
diff --git a/gfx/skia/skia/src/core/SkPixmap.cpp b/gfx/skia/skia/src/core/SkPixmap.cpp
9fc2ebe6d7f1 Firefox 49.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    12
--- a/gfx/skia/skia/src/core/SkPixmap.cpp
9fc2ebe6d7f1 Firefox 49.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    13
+++ b/gfx/skia/skia/src/core/SkPixmap.cpp
9fc2ebe6d7f1 Firefox 49.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    14
@@ -221,17 +221,17 @@ bool SkPixmap::erase(const SkColor4f& or
9fc2ebe6d7f1 Firefox 49.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    15
         pm = *this;
9fc2ebe6d7f1 Firefox 49.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    16
     }
9fc2ebe6d7f1 Firefox 49.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    17
 
9fc2ebe6d7f1 Firefox 49.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    18
     const SkColor4f color = origColor.pin();
9fc2ebe6d7f1 Firefox 49.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    19
 
9fc2ebe6d7f1 Firefox 49.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    20
     if (kRGBA_F16_SkColorType != pm.colorType()) {
9fc2ebe6d7f1 Firefox 49.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    21
         Sk4f c4 = Sk4f::Load(color.vec());
9fc2ebe6d7f1 Firefox 49.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    22
         SkColor c;
9fc2ebe6d7f1 Firefox 49.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    23
-        (c4 * Sk4f(255) + Sk4f(0.5f)).store(&c);
9fc2ebe6d7f1 Firefox 49.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    24
+        SkNx_cast<uint8_t>(c4 * Sk4f(255) + Sk4f(0.5f)).store(&c);
9fc2ebe6d7f1 Firefox 49.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    25
         return pm.erase(c);
9fc2ebe6d7f1 Firefox 49.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    26
     }
9fc2ebe6d7f1 Firefox 49.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    27
 
9fc2ebe6d7f1 Firefox 49.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    28
     const uint64_t half4 = color.premul().toF16();
9fc2ebe6d7f1 Firefox 49.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    29
     for (int y = 0; y < pm.height(); ++y) {
9fc2ebe6d7f1 Firefox 49.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    30
         sk_memset64(pm.writable_addr64(0, y), half4, pm.width());
9fc2ebe6d7f1 Firefox 49.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    31
     }
9fc2ebe6d7f1 Firefox 49.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    32
     return true;