aboutsummaryrefslogtreecommitdiff
path: root/tests/PathTest.cpp
diff options
context:
space:
mode:
authorcaryclark <caryclark@google.com>2016-09-22 05:15:14 -0700
committerCommit bot <commit-bot@chromium.org>2016-09-22 05:15:15 -0700
commitac78863acdef4b428aaf66985b80c76d1be0fdea (patch)
tree8714e5d2a8e13ca39a30d3a5ddbabd94285820d7 /tests/PathTest.cpp
parentd1d628120af11c022e88265e9bdd27eb7d5d1eb8 (diff)
fix for conic fuzz
A fuzzer generates a conic that hangs when drawn. The quads that approximate the conics move up and down in y, confusing the renderer. This fix ensures that the split conic maintains the same y direction as the original conic. R=reed@google.com BUG=647922 GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2350263003 Review-Url: https://codereview.chromium.org/2350263003
Diffstat (limited to 'tests/PathTest.cpp')
-rw-r--r--tests/PathTest.cpp14
1 files changed, 14 insertions, 0 deletions
diff --git a/tests/PathTest.cpp b/tests/PathTest.cpp
index 483d14ec48..99a4e5b5af 100644
--- a/tests/PathTest.cpp
+++ b/tests/PathTest.cpp
@@ -157,6 +157,19 @@ static void test_fuzz_crbug_643933() {
canvas->drawPath(path, paint);
}
+static void test_fuzz_crbug_647922() {
+ auto surface(SkSurface::MakeRasterN32Premul(250, 250));
+ SkCanvas* canvas = surface->getCanvas();
+ SkPaint paint;
+ paint.setAntiAlias(true);
+ SkPath path;
+ path.moveTo(0, 0);
+ path.conicTo(SkBits2Float(0x00003939), SkBits2Float(0x42487fff), // 2.05276e-41f, 50.125f
+ SkBits2Float(0x48082361), SkBits2Float(0x4408e8e9), // 139406, 547.639f
+ SkBits2Float(0x4d1ade0f)); // 1.6239e+08f
+ canvas->drawPath(path, paint);
+}
+
/**
* In debug mode, this path was causing an assertion to fail in
* SkPathStroker::preJoinTo() and, in Release, the use of an unitialized value.
@@ -4275,6 +4288,7 @@ DEF_TEST(PathContains, reporter) {
}
DEF_TEST(Paths, reporter) {
+ test_fuzz_crbug_647922();
test_fuzz_crbug_643933();
test_sect_with_horizontal_needs_pinning();
test_crbug_629455(reporter);