From: herb Date: Thu, 10 Dec 2015 22:17:41 +0000 (-0800) Subject: Fix UB function problems for AA merger. X-Git-Tag: accepted/tizen/5.0/unified/20181102.025319~184^2~356 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=9449616020a58043a49f0342679bf095918792a6;p=platform%2Fupstream%2FlibSkiaSharp.git Fix UB function problems for AA merger. BUG=skia:4634 Review URL: https://codereview.chromium.org/1518863002 --- diff --git a/src/core/SkAAClip.cpp b/src/core/SkAAClip.cpp index bbd1f55..0de6d35 100644 --- a/src/core/SkAAClip.cpp +++ b/src/core/SkAAClip.cpp @@ -2056,9 +2056,10 @@ static inline uint16_t mergeOne(uint16_t value, unsigned alpha) { SkMulDiv255Round(b, alpha)); } -template void mergeT(const T* SK_RESTRICT src, int srcN, - const uint8_t* SK_RESTRICT row, int rowN, - T* SK_RESTRICT dst) { +template +void mergeT(const void* inSrc, int srcN, const uint8_t* SK_RESTRICT row, int rowN, void* inDst) { + const T* SK_RESTRICT src = static_cast(inSrc); + T* SK_RESTRICT dst = static_cast(inDst); for (;;) { SkASSERT(rowN > 0); SkASSERT(srcN > 0); @@ -2094,14 +2095,10 @@ static MergeAAProc find_merge_aa_proc(SkMask::Format format) { SkDEBUGFAIL("unsupported"); return nullptr; case SkMask::kA8_Format: - case SkMask::k3D_Format: { - void (*proc8)(const uint8_t*, int, const uint8_t*, int, uint8_t*) = mergeT; - return (MergeAAProc)proc8; - } - case SkMask::kLCD16_Format: { - void (*proc16)(const uint16_t*, int, const uint8_t*, int, uint16_t*) = mergeT; - return (MergeAAProc)proc16; - } + case SkMask::k3D_Format: + return mergeT ; + case SkMask::kLCD16_Format: + return mergeT; default: SkDEBUGFAIL("unsupported"); return nullptr;