diff options
author | herb <herb@google.com> | 2015-12-17 14:22:34 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-12-17 14:22:34 -0800 |
commit | dafd044e4aea529f88d899247678d4549f776388 (patch) | |
tree | feb5f2c96bc1f0f4e3ac3e70e45e515a36f7fdfd /src/core/SkBlitMask_D32.cpp | |
parent | 5b30c6f6224f5e9d29ff7060311556ba0eee0fdc (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
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..5a1ad2813e 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 uint8_t* SK_RESTRICT mask = static_cast<const uint8_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 uint8_t* SK_RESTRICT mask = static_cast<const uint8_t*>(maskIn); for (int i = 0; i < count; ++i) { uint16_t m = mask[i]; if (0 == m) { |