diff options
author | caryclark <caryclark@google.com> | 2015-06-29 11:41:52 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-06-29 11:41:52 -0700 |
commit | 218f21ac09c70b98a10cb8e1999b85a22fa0b151 (patch) | |
tree | fa8dc18cd996409a98406536baa38bb2ef22185b /src/pathops/SkOpSpan.cpp | |
parent | f657b1093ef22390d3ce1eb56686a8185408a84f (diff) |
don't fix winding for empty paths
A path can be non-empty but become empty when it is simplified.
For instance, a path with the same rectangle, twice, with opposite
windings.
No contours are created for empty paths, so don't try to
fix their winding direction.
Additionally, check for a NULL coincidence since the
OpBuilder assumes that no concidence edges can be present
after the paths are simplified. This code should not get
called, but it's worth the future-proofing to check.
R=fmalita@chromium.org
BUG=502792
Review URL: https://codereview.chromium.org/1218863005
Diffstat (limited to 'src/pathops/SkOpSpan.cpp')
-rwxr-xr-x | src/pathops/SkOpSpan.cpp | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/pathops/SkOpSpan.cpp b/src/pathops/SkOpSpan.cpp index e89ec3e204..ae4771cffc 100755 --- a/src/pathops/SkOpSpan.cpp +++ b/src/pathops/SkOpSpan.cpp @@ -279,7 +279,10 @@ void SkOpSpan::detach(SkOpPtT* kept) { prev->setNext(next); next->setPrev(prev); this->segment()->detach(this); - this->globalState()->coincidence()->fixUp(this->ptT(), kept); + SkOpCoincidence* coincidence = this->globalState()->coincidence(); + if (coincidence) { + coincidence->fixUp(this->ptT(), kept); + } this->ptT()->setDeleted(); } |