diff options
author | Mike Reed <reed@google.com> | 2018-01-22 16:49:49 -0500 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2018-01-22 22:33:11 +0000 |
commit | 1fe0bcc4f92bfe104bda57aa2ae5d0cb5b4f8c09 (patch) | |
tree | 24ffec2976a352ea65128c2583c4b13e7608d272 /src | |
parent | ca02c0a464efb6ef1d856d5658b9312fde580cc0 (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.cpp | 10 | ||||
-rw-r--r-- | src/core/SkScan_AntiPath.cpp | 7 |
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; } |