diff options
author | Mike Reed <reed@google.com> | 2018-01-03 15:35:33 -0500 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2018-01-03 21:01:54 +0000 |
commit | 9fc53624a09f6d3378b0a540832571dc1c31fbcd (patch) | |
tree | 74e3ea18c10eafc1c4c104c6d1c7b48e70975c8e /src | |
parent | 3a8a277d9364b6747ee16f55c70c974cd0f8d134 (diff) |
check for irect with overflow width/height
Bug:798066
Change-Id: Iac324ac5a32fae241a528751c84279ce60ac4baf
Reviewed-on: https://skia-review.googlesource.com/90544
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Reed <reed@google.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/core/SkAAClip.cpp | 3 | ||||
-rw-r--r-- | src/core/SkRectPriv.h | 24 |
2 files changed, 26 insertions, 1 deletions
diff --git a/src/core/SkAAClip.cpp b/src/core/SkAAClip.cpp index d4db8ee31e..c0707c5b0c 100644 --- a/src/core/SkAAClip.cpp +++ b/src/core/SkAAClip.cpp @@ -9,6 +9,7 @@ #include "SkAtomics.h" #include "SkBlitter.h" #include "SkColorData.h" +#include "SkRectPriv.h" #include "SkPath.h" #include "SkScan.h" #include "SkUtils.h" @@ -703,7 +704,7 @@ bool SkAAClip::setEmpty() { } bool SkAAClip::setRect(const SkIRect& bounds) { - if (bounds.isEmpty()) { + if (!SkRectPriv::PositiveDimensions(bounds)) { return this->setEmpty(); } diff --git a/src/core/SkRectPriv.h b/src/core/SkRectPriv.h new file mode 100644 index 0000000000..4dcc4c56ce --- /dev/null +++ b/src/core/SkRectPriv.h @@ -0,0 +1,24 @@ +/* + * Copyright 2018 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkRectPriv_DEFINED +#define SkRectPriv_DEFINED + +#include "SkRect.h" + +class SkRectPriv { +public: + // Returns true iff width and height are positive. Catches inverted, empty, and overflowing + // (way too big) rects. This is used by clients that want a non-empty rect that they can also + // actually use its computed width/height. + // + static bool PositiveDimensions(const SkIRect& r) { + return r.width() > 0 && r.height() > 0; + } +}; + +#endif |