diff options
Diffstat (limited to 'native')
-rw-r--r-- | native/android/libandroid.map.txt | 2 | ||||
-rw-r--r-- | native/graphics/jni/imagedecoder.cpp | 8 |
2 files changed, 5 insertions, 5 deletions
diff --git a/native/android/libandroid.map.txt b/native/android/libandroid.map.txt index 97b861b390ad..a8f1d2c7bbba 100644 --- a/native/android/libandroid.map.txt +++ b/native/android/libandroid.map.txt @@ -23,6 +23,8 @@ LIBANDROID { AChoreographer_postFrameCallbackDelayed; # introduced=24 AChoreographer_postFrameCallback64; # introduced=29 AChoreographer_postFrameCallbackDelayed64; # introduced=29 + AChoreographer_registerRefreshRateCallback; # introduced=30 + AChoreographer_unregisterRefreshRateCallback; # introduced=30 AConfiguration_copy; AConfiguration_delete; AConfiguration_diff; diff --git a/native/graphics/jni/imagedecoder.cpp b/native/graphics/jni/imagedecoder.cpp index 79bcc15e1f0f..c1143ce9c3dc 100644 --- a/native/graphics/jni/imagedecoder.cpp +++ b/native/graphics/jni/imagedecoder.cpp @@ -325,11 +325,9 @@ int AImageDecoder_decodeImage(AImageDecoder* decoder, ImageDecoder* imageDecoder = toDecoder(decoder); - const int height = imageDecoder->getOutputInfo().height(); - const size_t minStride = AImageDecoder_getMinimumStride(decoder); - // If this calculation were to overflow, it would have been caught in - // setTargetSize. - if (stride < minStride || size < stride * (height - 1) + minStride) { + SkImageInfo info = imageDecoder->getOutputInfo(); + size_t minSize = info.computeByteSize(stride); + if (SkImageInfo::ByteSizeOverflowed(minSize) || size < minSize || !info.validRowBytes(stride)) { return ANDROID_IMAGE_DECODER_BAD_PARAMETER; } |