Make SkPath::conservativelyContainsRect not assert on paths that begin with repeated moveTos
R=reed@google.com
Author: bsalomon@google.com
Review URL: https://chromiumcodereview.appspot.com/21565002
git-svn-id: http://skia.googlecode.com/svn/trunk@10484 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/src/core/SkPath.cpp b/src/core/SkPath.cpp
index b285184..d1e4d79 100644
--- a/src/core/SkPath.cpp
+++ b/src/core/SkPath.cpp
@@ -301,29 +301,35 @@
SkPath::Verb verb;
SkPoint pts[4];
SkDEBUGCODE(int moveCnt = 0;)
+ SkDEBUGCODE(int segmentCount = 0;)
+ SkDEBUGCODE(int closeCount = 0;)
while ((verb = iter.next(pts)) != kDone_Verb) {
int nextPt = -1;
switch (verb) {
case kMove_Verb:
- SkASSERT(!moveCnt);
+ SkASSERT(!segmentCount && !closeCount);
SkDEBUGCODE(++moveCnt);
firstPt = prevPt = pts[0];
break;
case kLine_Verb:
nextPt = 1;
- SkASSERT(moveCnt);
+ SkASSERT(moveCnt && !closeCount);
+ SkDEBUGCODE(++segmentCount);
break;
case kQuad_Verb:
case kConic_Verb:
- SkASSERT(moveCnt);
+ SkASSERT(moveCnt && !closeCount);
+ SkDEBUGCODE(++segmentCount);
nextPt = 2;
break;
case kCubic_Verb:
- SkASSERT(moveCnt);
+ SkASSERT(moveCnt && !closeCount);
+ SkDEBUGCODE(++segmentCount);
nextPt = 3;
break;
case kClose_Verb:
+ SkDEBUGCODE(++closeCount;)
break;
default:
SkDEBUGFAIL("unknown verb");