diff options
author | reed <reed@google.com> | 2016-03-08 09:02:24 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-03-08 09:02:24 -0800 |
commit | aa5e1ae06b33841ad4efc9fbf4c8b2cd6236d58b (patch) | |
tree | 120d5f537f58937c0305eb2d5a807f28b841ae93 /src/core | |
parent | c41fd9251dad3e2e2797436a4ccfaf0490914fe0 (diff) |
work around leftshift for negative values
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1774963002
Review URL: https://codereview.chromium.org/1774963002
Diffstat (limited to 'src/core')
-rw-r--r-- | src/core/SkEdge.cpp | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/core/SkEdge.cpp b/src/core/SkEdge.cpp index c64896f2e0..94b7870b03 100644 --- a/src/core/SkEdge.cpp +++ b/src/core/SkEdge.cpp @@ -326,8 +326,9 @@ static inline int SkFDot6UpShift(SkFDot6 x, int upShift) { */ static SkFDot6 cubic_delta_from_line(SkFDot6 a, SkFDot6 b, SkFDot6 c, SkFDot6 d) { - SkFDot6 oneThird = ((a << 3) - ((b << 4) - b) + 6*c + d) * 19 >> 9; - SkFDot6 twoThird = (a + 6*b - ((c << 4) - c) + (d << 3)) * 19 >> 9; + // since our parameters may be negative, we don't use << to avoid ASAN warnings + SkFDot6 oneThird = (a*8 - b*15 + 6*c + d) * 19 >> 9; + SkFDot6 twoThird = (a + 6*b - c*15 + d*8) * 19 >> 9; return SkMax32(SkAbs32(oneThird), SkAbs32(twoThird)); } |