Avoid double-InitCache() in SimpleDoomBetween test, leak
[chromium-blink-merge.git] / skia / fix_for_1186198.diff
blob6158f594a25314644d00c859990fef398f38e6e3
1 Index: sgl/SkEdge.cpp
2 ===================================================================
3 --- sgl/SkEdge.cpp (revision 42965)
4 +++ sgl/SkEdge.cpp (working copy)
5 @@ -17,6 +17,7 @@
7 #include "SkEdge.h"
8 #include "SkFDot6.h"
9 +#include <limits>
12 In setLine, setQuadratic, setCubic, the first thing we do is to convert
13 @@ -76,8 +77,23 @@
15 fX = SkFDot6ToFixed(x0 + SkFixedMul(slope, (32 - y0) & 63)); // + SK_Fixed1/2
16 fDX = slope;
17 - fFirstY = SkToS16(top);
18 - fLastY = SkToS16(bot - 1);
19 + fFirstY = (int16_t)(top); // inlined skToS16()
20 + if (top != (long)fFirstY) {
21 + if (fFirstY < top) {
22 + fFirstY = std::numeric_limits<int16_t>::max();
23 + } else {
24 + fFirstY = std::numeric_limits<int16_t>::min();
25 + }
26 + fX -= fDX * (top - (long)fFirstY);
27 + }
28 + fLastY = (int16_t)(bot - 1); // inlined SkToS16()
29 + if (bot-1 != (long)fLastY) {
30 + if (fLastY < bot-1) {
31 + fLastY = std::numeric_limits<int16_t>::max();
32 + } else {
33 + fLastY = std::numeric_limits<int16_t>::min();
34 + }
35 + }
36 fCurveCount = 0;
37 fWinding = SkToS8(winding);
38 fCurveShift = 0;