| Index: src/pathops/SkPathOpsOp.cpp
 | 
| diff --git a/src/pathops/SkPathOpsOp.cpp b/src/pathops/SkPathOpsOp.cpp
 | 
| index ff40b475cd101979873256d64f6e522b28a48fea..72efb89d101409c24a858813df1c3b1bf607d139 100644
 | 
| --- a/src/pathops/SkPathOpsOp.cpp
 | 
| +++ b/src/pathops/SkPathOpsOp.cpp
 | 
| @@ -45,28 +45,22 @@
 | 
|              continue;
 | 
|          }
 | 
|          const SkOpAngle* firstAngle = angle;
 | 
| -        bool loop = false;
 | 
| +        SkDEBUGCODE(bool loop = false);
 | 
|          int winding;
 | 
|          do {
 | 
|              angle = angle->next();
 | 
| -            if (angle == firstAngle && loop) {
 | 
| -                break;    // if we get here, there's no winding, loop is unorderable
 | 
| -            }
 | 
| -            loop |= angle == firstAngle;
 | 
| +            SkASSERT(angle != firstAngle || !loop);
 | 
| +            SkDEBUGCODE(loop |= angle == firstAngle);
 | 
|              segment = angle->segment();
 | 
|              winding = segment->windSum(angle);
 | 
|          } while (winding == SK_MinS32);
 | 
| -        if (winding == SK_MinS32) {
 | 
| -            continue;
 | 
| -        }
 | 
|          int sumMiWinding = segment->updateWindingReverse(angle);
 | 
|          int sumSuWinding = segment->updateOppWindingReverse(angle);
 | 
|          if (segment->operand()) {
 | 
|              SkTSwap<int>(sumMiWinding, sumSuWinding);
 | 
|          }
 | 
|          SkOpSegment* first = NULL;
 | 
| -        bool badData = false;
 | 
| -        while ((angle = angle->next()) != firstAngle && !badData) {
 | 
| +        while ((angle = angle->next()) != firstAngle) {
 | 
|              segment = angle->segment();
 | 
|              int start = angle->start();
 | 
|              int end = angle->end();
 | 
| @@ -79,18 +73,10 @@
 | 
|                      *tIndex = start;
 | 
|                      *endIndex = end;
 | 
|                  }
 | 
| -                if (segment->inconsistentAngle(maxWinding, sumWinding, oppMaxWinding,
 | 
| -                        oppSumWinding, angle)) {
 | 
| -                    badData = true;
 | 
| -                    break;
 | 
| -                }
 | 
|                  // OPTIMIZATION: should this also add to the chase?
 | 
|                  (void) segment->markAngle(maxWinding, sumWinding, oppMaxWinding,
 | 
|                      oppSumWinding, angle);
 | 
|              }
 | 
| -        }
 | 
| -        if (badData) {
 | 
| -            continue;
 | 
|          }
 | 
|          if (first) {
 | 
|         #if TRY_ROTATE
 | 
| @@ -259,42 +245,7 @@
 | 
|      {{ false, true }, { false, false }},  // rev diff
 | 
|  };
 | 
|  
 | 
| -#define DEBUGGING_PATHOPS_FROM_HOST 0  // enable to debug svg in chrome -- note path hardcoded below
 | 
| -#if DEBUGGING_PATHOPS_FROM_HOST
 | 
| -#include "SkData.h"
 | 
| -#include "SkStream.h"
 | 
| -
 | 
| -static void dump_path(FILE* file, const SkPath& path, bool force, bool dumpAsHex) {
 | 
| -    SkDynamicMemoryWStream wStream;
 | 
| -    path.dump(&wStream, force, dumpAsHex);
 | 
| -    SkAutoDataUnref data(wStream.copyToData());
 | 
| -    fprintf(file, "%.*s\n", (int) data->size(), data->data());
 | 
| -}
 | 
| -
 | 
| -static int dumpID = 0;
 | 
| -
 | 
| -static void dump_op(const SkPath& one, const SkPath& two, SkPathOp op) {
 | 
| -    FILE* file = fopen("/usr/local/google/home/caryclark/Documents/svgop.txt", "w");
 | 
| -    fprintf(file, "\nstatic void test_%d(skiatest::Reporter* reporter, const char* filename) {\n",
 | 
| -            ++dumpID);
 | 
| -    fprintf(file, "    SkPath path;\n");
 | 
| -    fprintf(file, "    path.setFillType((SkPath::FillType) %d);\n", one.getFillType());
 | 
| -    dump_path(file, one, false, true);
 | 
| -    fprintf(file, "    SkPath path1(path);\n");
 | 
| -    fprintf(file, "    path.reset();\n");
 | 
| -    fprintf(file, "    path.setFillType((SkPath::FillType) %d);\n", two.getFillType());
 | 
| -    dump_path(file, two, false, true);
 | 
| -    fprintf(file, "    SkPath path2(path);\n");
 | 
| -    fprintf(file, "    testPathOp(reporter, path1, path2, (SkPathOp) %d, filename);\n", op);
 | 
| -    fprintf(file, "}\n");	
 | 
| -    fclose(file);
 | 
| -}
 | 
| -#endif
 | 
| -
 | 
|  bool Op(const SkPath& one, const SkPath& two, SkPathOp op, SkPath* result) {
 | 
| -#if DEBUGGING_PATHOPS_FROM_HOST
 | 
| -    dump_op(one, two, op);
 | 
| -#endif	
 | 
|  #if DEBUG_SHOW_TEST_NAME
 | 
|      char* debugName = DEBUG_FILENAME_STRING;
 | 
|      if (debugName && debugName[0]) {
 | 
| 
 |