diff options
author | Mike Klein <mtklein@chromium.org> | 2018-04-19 09:29:02 -0400 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2018-04-19 14:08:14 +0000 |
commit | 23e4544e9442be38bea9678d66f1c76225eb5bb7 (patch) | |
tree | a06a6bc44265b331ca8346ed71a154f1c8147c15 | |
parent | bd000a11c7f95fc58558c2164e7fac5a238bbe8b (diff) |
disallow negative setReserve() calls
We already assert that setCount()'s argument is non-negative.
This does the same for setReserve().
There was one call site I could find that was actually sometimes
passing negative values to setReserve(), guarded here.
Already reviewed: https://skia-review.googlesource.com/c/skia/+/115982
Change-Id: Ia52a286732bf4056e9baf09555d27bab9abf2554
Reviewed-on: https://skia-review.googlesource.com/122305
Reviewed-by: Mike Klein <mtklein@chromium.org>
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
-rw-r--r-- | include/private/SkTDArray.h | 1 | ||||
-rwxr-xr-x | src/utils/SkOffsetPolygon.cpp | 4 |
2 files changed, 4 insertions, 1 deletions
diff --git a/include/private/SkTDArray.h b/include/private/SkTDArray.h index 658d371917..35ad40906a 100644 --- a/include/private/SkTDArray.h +++ b/include/private/SkTDArray.h @@ -143,6 +143,7 @@ public: } void setReserve(int reserve) { + SkASSERT(reserve >= 0); if (reserve > fReserve) { this->resizeStorageToAtLeast(reserve); } diff --git a/src/utils/SkOffsetPolygon.cpp b/src/utils/SkOffsetPolygon.cpp index 94fe96562d..47b41250e2 100755 --- a/src/utils/SkOffsetPolygon.cpp +++ b/src/utils/SkOffsetPolygon.cpp @@ -347,7 +347,9 @@ bool SkInsetConvexPolygon(const SkPoint* inputPolygonVerts, int inputPolygonSize static constexpr SkScalar kCleanupTolerance = 0.01f; insetPolygon->reset(); - insetPolygon->setReserve(insetVertexCount); + if (insetVertexCount >= 0) { + insetPolygon->setReserve(insetVertexCount); + } currIndex = -1; for (int i = 0; i < inputPolygonSize; ++i) { if (edgeData[i].fValid && (currIndex == -1 || |