aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/pathops/SkOpSpan.cpp
diff options
context:
space:
mode:
authorGravatar caryclark <caryclark@google.com>2015-06-29 11:41:52 -0700
committerGravatar Commit bot <commit-bot@chromium.org>2015-06-29 11:41:52 -0700
commit218f21ac09c70b98a10cb8e1999b85a22fa0b151 (patch)
treefa8dc18cd996409a98406536baa38bb2ef22185b /src/pathops/SkOpSpan.cpp
parentf657b1093ef22390d3ce1eb56686a8185408a84f (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-xsrc/pathops/SkOpSpan.cpp5
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();
}