diff options
| -rw-r--r-- | core/jni/android/graphics/Graphics.cpp | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/core/jni/android/graphics/Graphics.cpp b/core/jni/android/graphics/Graphics.cpp index a51af40..3ea9b58 100644 --- a/core/jni/android/graphics/Graphics.cpp +++ b/core/jni/android/graphics/Graphics.cpp @@ -536,7 +536,12 @@ jbyteArray GraphicsJNI::allocateJavaPixelRef(JNIEnv* env, SkBitmap* bitmap, return NULL; } - const size_t size = bitmap->getSize(); + const int64_t size64 = bitmap->computeSize64(); + if (!sk_64_isS32(size64)) { + doThrowIAE(env, "bitmap size exceeds 32 bits"); + return NULL; + } + const size_t size = sk_64_asS32(size64); jbyteArray arrayObj = (jbyteArray) env->CallObjectMethod(gVMRuntime, gVMRuntime_newNonMovableArray, gByte_class, size); |
