aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/SkRegion.cpp
diff options
context:
space:
mode:
authorGravatar Hal Canary <halcanary@google.com>2017-06-21 19:57:09 +0000
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-06-21 19:57:21 +0000
commit7f4124058eda42e8379f2e979fabc339b8580348 (patch)
tree9f6eeda7857bc0b3f8c34726d6d4aea70a35c88f /src/core/SkRegion.cpp
parentb29dd819c9f4cc0f33c24a10b128c363a4c83a6f (diff)
Revert "SkRegion: more robust validation"
This reverts commit 711450e948b9900011dc0d474f82bf7bc9913259. Reason for revert: speculative revert to fix chrome roll. Original change's description: > SkRegion: more robust validation > > BUG=oss-fuzz:1864 > Change-Id: I4c3d3c4c7b0717399fe16f227e032682b13ebc74 > Reviewed-on: https://skia-review.googlesource.com/20322 > Reviewed-by: Cary Clark <caryclark@google.com> > Commit-Queue: Hal Canary <halcanary@google.com> TBR=halcanary@google.com,caryclark@google.com,reed@google.com Change-Id: I95cbbf064db6ea7ef74a757bca058ba8de20d87b No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: oss-fuzz:1864 Reviewed-on: https://skia-review.googlesource.com/20452 Reviewed-by: Hal Canary <halcanary@google.com> Commit-Queue: Hal Canary <halcanary@google.com>
Diffstat (limited to 'src/core/SkRegion.cpp')
-rw-r--r--src/core/SkRegion.cpp18
1 files changed, 1 insertions, 17 deletions
diff --git a/src/core/SkRegion.cpp b/src/core/SkRegion.cpp
index b25633b67c..e873ebb453 100644
--- a/src/core/SkRegion.cpp
+++ b/src/core/SkRegion.cpp
@@ -1155,9 +1155,6 @@ static bool validate_run(const int32_t* runs,
if (rect.fTop == SkRegion::kRunTypeSentinel) {
return false; // no rect can contain SkRegion::kRunTypeSentinel
}
- if (rect.fTop != givenBounds.fTop) {
- return false; // Must not begin with empty span that does not contribute to bounds.
- }
do {
--ySpanCount;
if (ySpanCount < 0) {
@@ -1167,13 +1164,6 @@ static bool validate_run(const int32_t* runs,
if (rect.fBottom == SkRegion::kRunTypeSentinel) {
return false;
}
- if (rect.fBottom > givenBounds.fBottom) {
- return false; // Must not end with empty span that does not contribute to bounds.
- }
- if (rect.fBottom <= rect.fTop) {
- return false; // y-intervals must be ordered; rects must be non-empty.
- }
-
int32_t xIntervals = *runs++;
SkASSERT(runs < end);
if (xIntervals < 0 || runs + 1 + 2 * xIntervals > end) {
@@ -1183,19 +1173,13 @@ static bool validate_run(const int32_t* runs,
if (intervalCount < 0) {
return false; // too many intervals
}
- bool firstInterval = true;
- int32_t lastRight; // check that x-intervals are distinct and ordered.
while (xIntervals-- > 0) {
rect.fLeft = *runs++;
rect.fRight = *runs++;
if (rect.fLeft == SkRegion::kRunTypeSentinel ||
- rect.fRight == SkRegion::kRunTypeSentinel ||
- rect.fLeft >= rect.fRight || // check non-empty rect
- (!firstInterval && rect.fLeft <= lastRight)) {
+ rect.fRight == SkRegion::kRunTypeSentinel || rect.isEmpty()) {
return false;
}
- lastRight = rect.fRight;
- firstInterval = false;
bounds.join(rect);
}
if (*runs++ != SkRegion::kRunTypeSentinel) {