diff options
author | Mike Reed <reed@google.com> | 2017-10-09 11:37:44 -0400 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2017-10-09 16:05:34 +0000 |
commit | 72818018494372b8692203b77aedfa6b8a87e3bc (patch) | |
tree | 59dee65189262f13811768ea965418862e7365e1 | |
parent | 16e92cdd91bd46e2909465a7509960a3ca2eeeb6 (diff) |
Revert "Revert "change computeByteSize to return max_size_t on overflow""
This reverts commit 384f0a7d6626026f21313e85e51890d747171ee8.
Bug: skia:
Change-Id: I392ef5c1a5172181caf81ae270befeba6e778241
Reviewed-on: https://skia-review.googlesource.com/57084
Commit-Queue: Mike Reed <reed@google.com>
Commit-Queue: Ben Wagner <bungeman@google.com>
Reviewed-by: Ben Wagner <bungeman@google.com>
-rw-r--r-- | include/core/SkImageInfo.h | 12 | ||||
-rw-r--r-- | include/core/SkTypes.h | 1 | ||||
-rw-r--r-- | public.bzl | 1 | ||||
-rw-r--r-- | src/core/SkImageInfo.cpp | 4 |
4 files changed, 18 insertions, 0 deletions
diff --git a/include/core/SkImageInfo.h b/include/core/SkImageInfo.h index 212d96ef5e..fa3797bbb5 100644 --- a/include/core/SkImageInfo.h +++ b/include/core/SkImageInfo.h @@ -317,11 +317,19 @@ public: } #endif +#ifdef SK_SUPPORT_LEGACY_COMPUTEBYTESIZE_RET_0 /** * Returns the size (in bytes) of the image buffer that this info needs, given the specified * rowBytes. The rowBytes must be >= this->minRowBytes(). * If the calculation overflows, or if the height is 0, this returns 0. */ +#else + /** + * Returns the size (in bytes) of the image buffer that this info needs, given the specified + * rowBytes. The rowBytes must be >= this->minRowBytes(). + * If the calculation overflows this returns SK_MaxSizeT + */ +#endif size_t computeByteSize(size_t rowBytes) const; /** @@ -334,7 +342,11 @@ public: // Returns true if the result of computeByteSize (or computeMinByteSize) overflowed static bool ByteSizeOverflowed(size_t byteSize) { +#ifdef SK_SUPPORT_LEGACY_COMPUTEBYTESIZE_RET_0 return 0 == byteSize; +#else + return SK_MaxSizeT == byteSize; +#endif } bool validRowBytes(size_t rowBytes) const { diff --git a/include/core/SkTypes.h b/include/core/SkTypes.h index 63a2b40591..59bdaaa90c 100644 --- a/include/core/SkTypes.h +++ b/include/core/SkTypes.h @@ -233,6 +233,7 @@ template <typename D, typename S> D SkTo(S s) { #define SK_MaxU32 0xFFFFFFFF #define SK_MinU32 0 #define SK_NaN32 ((int) (1U << 31)) +#define SK_MaxSizeT SIZE_MAX static inline int32_t SkLeftShift(int32_t value, int32_t shift) { return (int32_t) ((uint32_t) value << shift); diff --git a/public.bzl b/public.bzl index e8325500a0..dfb64707d6 100644 --- a/public.bzl +++ b/public.bzl @@ -656,6 +656,7 @@ DEFINES_ALL = [ # Required for building dm. "GR_TEST_UTILS", # Staging flags for API changes + "SK_SUPPORT_LEGACY_COMPUTEBYTESIZE_RET_0", # Should remove after we update golden images "SK_WEBP_ENCODER_USE_DEFAULT_METHOD", # Experiment to diagnose image diffs in Google3 diff --git a/src/core/SkImageInfo.cpp b/src/core/SkImageInfo.cpp index c610b82bdc..9e08768d7b 100644 --- a/src/core/SkImageInfo.cpp +++ b/src/core/SkImageInfo.cpp @@ -78,7 +78,11 @@ size_t SkImageInfo::computeByteSize(size_t rowBytes) const { SkSafeMath safe; size_t bytes = safe.add(safe.mul(fHeight - 1, rowBytes), safe.mul(fWidth, this->bytesPerPixel())); +#ifdef SK_SUPPORT_LEGACY_COMPUTEBYTESIZE_RET_0 return safe ? bytes : 0; +#else + return safe ? bytes : SK_MaxSizeT; +#endif } static bool alpha_type_is_valid(SkAlphaType alphaType) { |