aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorGravatar Mike Reed <reed@google.com>2018-01-22 16:49:49 -0500
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2018-01-22 22:33:11 +0000
commit1fe0bcc4f92bfe104bda57aa2ae5d0cb5b4f8c09 (patch)
tree24ffec2976a352ea65128c2583c4b13e7608d272 /src
parentca02c0a464efb6ef1d856d5658b9312fde580cc0 (diff)
check for huge paths
Bug:802976 Change-Id: Ibb5930442f75ca8483afc8dfa5869cac98573904 Reviewed-on: https://skia-review.googlesource.com/98440 Reviewed-by: Cary Clark <caryclark@google.com> Reviewed-by: Florin Malita <fmalita@chromium.org> Commit-Queue: Mike Reed <reed@google.com>
Diffstat (limited to 'src')
-rw-r--r--src/core/SkPaint.cpp10
-rw-r--r--src/core/SkScan_AntiPath.cpp7
2 files changed, 13 insertions, 4 deletions
diff --git a/src/core/SkPaint.cpp b/src/core/SkPaint.cpp
index 05e3e360bf..6198aa307b 100644
--- a/src/core/SkPaint.cpp
+++ b/src/core/SkPaint.cpp
@@ -1937,6 +1937,11 @@ bool SkPaint::unflatten(SkReadBuffer& buffer) {
bool SkPaint::getFillPath(const SkPath& src, SkPath* dst, const SkRect* cullRect,
SkScalar resScale) const {
+ if (!src.isFinite()) {
+ dst->reset();
+ return false;
+ }
+
SkStrokeRec rec(*this, resScale);
const SkPath* srcPtr = &src;
@@ -1957,6 +1962,11 @@ bool SkPaint::getFillPath(const SkPath& src, SkPath* dst, const SkRect* cullRect
*dst = *srcPtr;
}
}
+
+ if (!dst->isFinite()) {
+ dst->reset();
+ return false;
+ }
return !rec.isHairlineStyle();
}
diff --git a/src/core/SkScan_AntiPath.cpp b/src/core/SkScan_AntiPath.cpp
index 70c8d1f972..db1527f650 100644
--- a/src/core/SkScan_AntiPath.cpp
+++ b/src/core/SkScan_AntiPath.cpp
@@ -756,9 +756,8 @@ void SkScan::AntiFillPath(const SkPath& path, const SkRegion& origClip,
#include "SkRasterClip.h"
-void SkScan::FillPath(const SkPath& path, const SkRasterClip& clip,
- SkBlitter* blitter) {
- if (clip.isEmpty()) {
+void SkScan::FillPath(const SkPath& path, const SkRasterClip& clip, SkBlitter* blitter) {
+ if (clip.isEmpty() || !path.isFinite()) {
return;
}
@@ -776,7 +775,7 @@ void SkScan::FillPath(const SkPath& path, const SkRasterClip& clip,
void SkScan::AntiFillPath(const SkPath& path, const SkRasterClip& clip,
SkBlitter* blitter, bool forceDAA) {
- if (clip.isEmpty()) {
+ if (clip.isEmpty() || !path.isFinite()) {
return;
}