Don't compare against uninit edge in SkPath::conservativelyContainsRect
Bug: chromium:752478
Change-Id: Ic281f06b300329ea9823b3eb76cc56b7a43fd2a5
Reviewed-on: https://skia-review.googlesource.com/31520
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
diff --git a/src/core/SkPath.cpp b/src/core/SkPath.cpp
index e304b4d..4f781c4 100644
--- a/src/core/SkPath.cpp
+++ b/src/core/SkPath.cpp
@@ -275,8 +275,8 @@
SkPath::Iter iter(*this, true);
SkPath::Verb verb;
SkPoint pts[4];
+ int segmentCount = 0;
SkDEBUGCODE(int moveCnt = 0;)
- SkDEBUGCODE(int segmentCount = 0;)
SkDEBUGCODE(int closeCount = 0;)
while ((verb = iter.next(pts, true, true)) != kDone_Verb) {
@@ -290,17 +290,17 @@
case kLine_Verb:
nextPt = 1;
SkASSERT(moveCnt && !closeCount);
- SkDEBUGCODE(++segmentCount);
+ ++segmentCount;
break;
case kQuad_Verb:
case kConic_Verb:
SkASSERT(moveCnt && !closeCount);
- SkDEBUGCODE(++segmentCount);
+ ++segmentCount;
nextPt = 2;
break;
case kCubic_Verb:
SkASSERT(moveCnt && !closeCount);
- SkDEBUGCODE(++segmentCount);
+ ++segmentCount;
nextPt = 3;
break;
case kClose_Verb:
@@ -332,7 +332,10 @@
}
}
- return check_edge_against_rect(prevPt, firstPt, rect, direction);
+ if (segmentCount) {
+ return check_edge_against_rect(prevPt, firstPt, rect, direction);
+ }
+ return false;
}
uint32_t SkPath::getGenerationID() const {