diff options
author | herb <herb@google.com> | 2015-12-18 09:52:15 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-12-18 09:52:15 -0800 |
commit | c7a784cc8cb1c1dfcd39a32b2170ffe547904e9f (patch) | |
tree | a4ae39c648dc78dd2562730828e2996d2b03de99 /src/core/SkBlitMask_D32.cpp | |
parent | 3e6be16e6d4dda6a27f0e1dbfe7c87fecfbf5577 (diff) |
Fix UB function problems for shaders and mask.
BUG=skia:4634
GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1530743002
Committed: https://skia.googlesource.com/skia/+/dafd044e4aea529f88d899247678d4549f776388
Review URL: https://codereview.chromium.org/1530743002
Diffstat (limited to 'src/core/SkBlitMask_D32.cpp')
-rw-r--r-- | src/core/SkBlitMask_D32.cpp | 36 |
1 files changed, 18 insertions, 18 deletions
diff --git a/src/core/SkBlitMask_D32.cpp b/src/core/SkBlitMask_D32.cpp index 3cc791af4e..c39ecfb759 100644 --- a/src/core/SkBlitMask_D32.cpp +++ b/src/core/SkBlitMask_D32.cpp @@ -76,9 +76,9 @@ bool SkBlitMask::BlitColor(const SkPixmap& device, const SkMask& mask, /////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////// -static void BW_RowProc_Blend(SkPMColor* SK_RESTRICT dst, - const uint8_t* SK_RESTRICT mask, - const SkPMColor* SK_RESTRICT src, int count) { +static void BW_RowProc_Blend( + SkPMColor* SK_RESTRICT dst, const void* maskIn, const SkPMColor* SK_RESTRICT src, int count) { + const uint8_t* SK_RESTRICT mask = static_cast<const uint8_t*>(maskIn); int i, octuple = (count + 7) >> 3; for (i = 0; i < octuple; ++i) { int m = *mask++; @@ -105,9 +105,9 @@ static void BW_RowProc_Blend(SkPMColor* SK_RESTRICT dst, } } -static void BW_RowProc_Opaque(SkPMColor* SK_RESTRICT dst, - const uint8_t* SK_RESTRICT mask, - const SkPMColor* SK_RESTRICT src, int count) { +static void BW_RowProc_Opaque( + SkPMColor* SK_RESTRICT dst, const void* maskIn, const SkPMColor* SK_RESTRICT src, int count) { + const uint8_t* SK_RESTRICT mask = static_cast<const uint8_t*>(maskIn); int i, octuple = (count + 7) >> 3; for (i = 0; i < octuple; ++i) { int m = *mask++; @@ -134,9 +134,9 @@ static void BW_RowProc_Opaque(SkPMColor* SK_RESTRICT dst, } } -static void A8_RowProc_Blend(SkPMColor* SK_RESTRICT dst, - const uint8_t* SK_RESTRICT mask, - const SkPMColor* SK_RESTRICT src, int count) { +static void A8_RowProc_Blend( + SkPMColor* SK_RESTRICT dst, const void* maskIn, const SkPMColor* SK_RESTRICT src, int count) { + const uint8_t* SK_RESTRICT mask = static_cast<const uint8_t*>(maskIn); for (int i = 0; i < count; ++i) { if (mask[i]) { dst[i] = SkBlendARGB32(src[i], dst[i], mask[i]); @@ -153,9 +153,9 @@ static void A8_RowProc_Blend(SkPMColor* SK_RESTRICT dst, #define EXPAND1(v, m, s) (((v) >> 8) & (m)) * (s) #define COMBINE(e0, e1, m) ((((e0) >> 8) & (m)) | ((e1) & ~(m))) -static void A8_RowProc_Opaque(SkPMColor* SK_RESTRICT dst, - const uint8_t* SK_RESTRICT mask, - const SkPMColor* SK_RESTRICT src, int count) { +static void A8_RowProc_Opaque( + SkPMColor* SK_RESTRICT dst, const void* maskIn, const SkPMColor* SK_RESTRICT src, int count) { + const uint8_t* SK_RESTRICT mask = static_cast<const uint8_t*>(maskIn); for (int i = 0; i < count; ++i) { int m = mask[i]; if (m) { @@ -188,9 +188,9 @@ static int src_alpha_blend(int src, int dst, int srcA, int mask) { return dst + SkAlphaMul(src - SkAlphaMul(srcA, dst), mask); } -static void LCD16_RowProc_Blend(SkPMColor* SK_RESTRICT dst, - const uint16_t* SK_RESTRICT mask, - const SkPMColor* SK_RESTRICT src, int count) { +static void LCD16_RowProc_Blend( + SkPMColor* SK_RESTRICT dst, const void* maskIn, const SkPMColor* SK_RESTRICT src, int count) { + const uint16_t* SK_RESTRICT mask = static_cast<const uint16_t*>(maskIn); for (int i = 0; i < count; ++i) { uint16_t m = mask[i]; if (0 == m) { @@ -231,9 +231,9 @@ static void LCD16_RowProc_Blend(SkPMColor* SK_RESTRICT dst, } } -static void LCD16_RowProc_Opaque(SkPMColor* SK_RESTRICT dst, - const uint16_t* SK_RESTRICT mask, - const SkPMColor* SK_RESTRICT src, int count) { +static void LCD16_RowProc_Opaque( + SkPMColor* SK_RESTRICT dst, const void* maskIn, const SkPMColor* SK_RESTRICT src, int count) { + const uint16_t* SK_RESTRICT mask = static_cast<const uint16_t*>(maskIn); for (int i = 0; i < count; ++i) { uint16_t m = mask[i]; if (0 == m) { |