Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(327)

Side by Side Diff: src/pathops/SkOpSpan.cpp

Issue 2166543002: fix fuzzer (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | tests/PathOpsOpTest.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2014 Google Inc. 2 * Copyright 2014 Google Inc.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license that can be 4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file. 5 * found in the LICENSE file.
6 */ 6 */
7 #include "SkOpCoincidence.h" 7 #include "SkOpCoincidence.h"
8 #include "SkOpContour.h" 8 #include "SkOpContour.h"
9 #include "SkOpSegment.h" 9 #include "SkOpSegment.h"
10 #include "SkPathWriter.h" 10 #include "SkPathWriter.h"
(...skipping 369 matching lines...) Expand 10 before | Expand all | Expand 10 after
380 } 380 }
381 381
382 // Please keep this in sync with debugInsertCoincidence() 382 // Please keep this in sync with debugInsertCoincidence()
383 bool SkOpSpan::insertCoincidence(const SkOpSegment* segment, bool flipped) { 383 bool SkOpSpan::insertCoincidence(const SkOpSegment* segment, bool flipped) {
384 if (this->containsCoincidence(segment)) { 384 if (this->containsCoincidence(segment)) {
385 return true; 385 return true;
386 } 386 }
387 SkOpPtT* next = &fPtT; 387 SkOpPtT* next = &fPtT;
388 while ((next = next->next()) != &fPtT) { 388 while ((next = next->next()) != &fPtT) {
389 if (next->segment() == segment) { 389 if (next->segment() == segment) {
390 SkOpSpan* span = flipped ? next->span()->prev() : next->span()->upCa st(); 390 SkOpSpan* span;
391 if (!span) { 391 if (flipped) {
392 return false; 392 span = next->span()->prev();
393 if (!span) {
394 return false;
395 }
396 } else {
397 SkOpSpanBase* base = next->span();
398 if (!base->upCastable()) {
399 return false;
400 }
401 span = base->upCast();
393 } 402 }
394 this->insertCoincidence(span); 403 this->insertCoincidence(span);
395 return true; 404 return true;
396 } 405 }
397 } 406 }
398 #if DEBUG_COINCIDENCE 407 #if DEBUG_COINCIDENCE
399 SkASSERT(0); // FIXME? if we get here, the span is missing its opposite segm ent... 408 SkASSERT(0); // FIXME? if we get here, the span is missing its opposite segm ent...
400 #endif 409 #endif
401 return true; 410 return true;
402 } 411 }
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
439 448
440 void SkOpSpan::setWindSum(int windSum) { 449 void SkOpSpan::setWindSum(int windSum) {
441 SkASSERT(!final()); 450 SkASSERT(!final());
442 if (fWindSum != SK_MinS32 && fWindSum != windSum) { 451 if (fWindSum != SK_MinS32 && fWindSum != windSum) {
443 this->globalState()->setWindingFailed(); 452 this->globalState()->setWindingFailed();
444 return; 453 return;
445 } 454 }
446 SkASSERT(!DEBUG_LIMIT_WIND_SUM || SkTAbs(windSum) <= DEBUG_LIMIT_WIND_SUM); 455 SkASSERT(!DEBUG_LIMIT_WIND_SUM || SkTAbs(windSum) <= DEBUG_LIMIT_WIND_SUM);
447 fWindSum = windSum; 456 fWindSum = windSum;
448 } 457 }
OLDNEW
« no previous file with comments | « no previous file | tests/PathOpsOpTest.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698