diff options
-rw-r--r-- | src/core/SkPath.cpp | 4 | ||||
-rw-r--r-- | tests/PathTest.cpp | 21 |
2 files changed, 1 insertions, 24 deletions
diff --git a/src/core/SkPath.cpp b/src/core/SkPath.cpp index 7a0f82800c..510efd6d9d 100644 --- a/src/core/SkPath.cpp +++ b/src/core/SkPath.cpp @@ -1252,9 +1252,7 @@ void SkPath::addOval(const SkRect &oval, Direction dir, unsigned startPointIndex } SkAutoDisableDirectionCheck addc(this); - // unlike addRect(), we can't use SkAutoPathBoundsUpdate here, since even with a finite - // bounds, we might (due to an overflow in intermediate calculations) create a nonfinite - // path. + SkAutoPathBoundsUpdate apbu(this, oval); SkDEBUGCODE(int initialVerbCount = this->countVerbs()); const int kVerbs = 6; // moveTo + 4x conicTo + close diff --git a/tests/PathTest.cpp b/tests/PathTest.cpp index 9885a92351..9d8c18f997 100644 --- a/tests/PathTest.cpp +++ b/tests/PathTest.cpp @@ -5051,24 +5051,3 @@ DEF_TEST(Path_isRect, reporter) { compare.set(&points53[1], 4); REPORTER_ASSERT(reporter, rect == compare); } - -/* - * addOval (which is called by bitmapdevice::drawOval) used to assume that if the bounds were - * finite, then the resulting path would be too. However, with the right (i.e. nasty) coordinates, - * its possible to make the calculation of the path overflow float and produce a nonfinite path. - * The fix was easy -- we just remove that assumption from addOval, and instead let it (lazily) - * compute the path as normal (i.e. just the same as if the client has made the calls to construct - * a path from conics). - * - * Before the fix, this test would assert - */ -DEF_TEST(giant_ovals, reporter) { - SkPaint paint; - SkRect r = { -3.01901558E+38f, 0, -5.32108205E+37f, 10 }; - - auto surface(SkSurface::MakeRasterN32Premul(84, 88)); - SkCanvas* canvas = surface->getCanvas(); - - canvas->translate(-r.fLeft, 0); - canvas->drawOval(r, paint); -} |