son of path is rect bug
This variation tricks SkPath::isRect by exploiting
that the implementation resets the point pointer to
process the close verb, and using the reset pointer
to walk over a series of points that don't move.
In addition to fixing this, rename variables to
make the line creation more obvious, since left,
right, and friends, are not the left and right.
R=robertphillips@google.com
Bug: 824145,skia:7792
Change-Id: If8ebbc3eedd270652670d6e111a5bc02e61f0eec
Reviewed-on: https://skia-review.googlesource.com/121122
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Cary Clark <caryclark@skia.org>
diff --git a/tests/PathTest.cpp b/tests/PathTest.cpp
index 4d25028..b96b93c 100644
--- a/tests/PathTest.cpp
+++ b/tests/PathTest.cpp
@@ -4977,4 +4977,13 @@
SkPoint points17[] = { {75, 10}, {75, 75}, {150, 75}, {150, 150}, {75, 150}, {75, 10} };
path = makePath(points17, SK_ARRAY_COUNT(points17), true);
REPORTER_ASSERT(reporter, !path.isRect(&rect, nullptr, nullptr));
+ // isolated from skbug.com/7792 comment 19
+ SkPath::Verb verbs19[] = { SkPath::kMove_Verb, SkPath::kLine_Verb, SkPath::kLine_Verb,
+ SkPath::kLine_Verb, SkPath::kLine_Verb, SkPath::kLine_Verb,
+ SkPath::kLine_Verb, SkPath::kClose_Verb, SkPath::kMove_Verb,
+ SkPath::kLine_Verb, SkPath::kLine_Verb };
+ SkPoint points19[] = { {75, 75}, {75, 75}, {75, 75}, {75, 75}, {150, 75}, {150, 150},
+ {75, 150}, {10, 10}, {30, 10}, {10, 30} };
+ path = makePath2(points19, verbs19, SK_ARRAY_COUNT(verbs19));
+ REPORTER_ASSERT(reporter, !path.isRect(&rect, nullptr, nullptr));
}