add helper to check for overflow

pre-CL to aid in changing the convention for when we overflow

Bug: skia:
Change-Id: I1e34a18fefb80187787a1c0c8ed7ee3516744d24
Reviewed-on: https://skia-review.googlesource.com/57103
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Reed <reed@google.com>
diff --git a/include/core/SkImageInfo.h b/include/core/SkImageInfo.h
index 50d068a..212d96e 100644
--- a/include/core/SkImageInfo.h
+++ b/include/core/SkImageInfo.h
@@ -332,6 +332,11 @@
         return this->computeByteSize(this->minRowBytes());
     }
 
+    // Returns true if the result of computeByteSize (or computeMinByteSize) overflowed
+    static bool ByteSizeOverflowed(size_t byteSize) {
+        return 0 == byteSize;
+    }
+
     bool validRowBytes(size_t rowBytes) const {
         uint64_t minRB = sk_64_mul(fWidth, this->bytesPerPixel());
         return rowBytes >= minRB;
diff --git a/src/core/SkAutoPixmapStorage.cpp b/src/core/SkAutoPixmapStorage.cpp
index df0c0fa..47f41e7 100644
--- a/src/core/SkAutoPixmapStorage.cpp
+++ b/src/core/SkAutoPixmapStorage.cpp
@@ -37,7 +37,7 @@
 
     size_t rb;
     size_t size = AllocSize(info, &rb);
-    if (0 == size) {
+    if (SkImageInfo::ByteSizeOverflowed(size)) {
         return false;
     }
     void* pixels = sk_malloc_flags(size, 0);
diff --git a/src/core/SkBitmapCache.cpp b/src/core/SkBitmapCache.cpp
index 8d3991a..0fc0c9e 100644
--- a/src/core/SkBitmapCache.cpp
+++ b/src/core/SkBitmapCache.cpp
@@ -290,7 +290,7 @@
 
     const size_t rb = info.minRowBytes();
     size_t size = info.computeByteSize(rb);
-    if (0 == size) {
+    if (SkImageInfo::ByteSizeOverflowed(size)) {
         return nullptr;
     }
 
diff --git a/src/core/SkMallocPixelRef.cpp b/src/core/SkMallocPixelRef.cpp
index 1086102..4a34d39 100644
--- a/src/core/SkMallocPixelRef.cpp
+++ b/src/core/SkMallocPixelRef.cpp
@@ -80,8 +80,8 @@
     size_t size = 0;
     if (!info.isEmpty() && rowBytes) {
         size = info.computeByteSize(rowBytes);
-        if (!size) {
-            return nullptr; // overflow
+        if (SkImageInfo::ByteSizeOverflowed(size)) {
+            return nullptr;
         }
     }
 #endif
diff --git a/src/image/SkImage.cpp b/src/image/SkImage.cpp
index 705efae..7e1b238 100644
--- a/src/image/SkImage.cpp
+++ b/src/image/SkImage.cpp
@@ -423,7 +423,7 @@
 
     size_t rowBytes = info.minRowBytes();
     size_t size = info.computeByteSize(rowBytes);
-    if (size == 0) {
+    if (SkImageInfo::ByteSizeOverflowed(size)) {
         return nullptr;
     }
     auto data = SkData::MakeUninitialized(size);
diff --git a/src/image/SkImage_Raster.cpp b/src/image/SkImage_Raster.cpp
index c576d9d..db91621 100644
--- a/src/image/SkImage_Raster.cpp
+++ b/src/image/SkImage_Raster.cpp
@@ -62,7 +62,7 @@
         }
 
         size_t size = info.computeByteSize(rowBytes);
-        if (0 == size) {
+        if (SkImageInfo::ByteSizeOverflowed(size)) {
             return false;
         }