aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Mike Klein <mtklein@chromium.org>2018-04-19 09:29:02 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2018-04-19 14:08:14 +0000
commit23e4544e9442be38bea9678d66f1c76225eb5bb7 (patch)
treea06a6bc44265b331ca8346ed71a154f1c8147c15
parentbd000a11c7f95fc58558c2164e7fac5a238bbe8b (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.h1
-rwxr-xr-xsrc/utils/SkOffsetPolygon.cpp4
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 ||