Fix uninitialized errors in SkPngCodec
- Initialize rowsDecoded in SkSampledCodec. Otherwise,
fillIncompleteImage may be called with an uninitialized
value. This change was originally uploaded to AOSP as
https://android-review.googlesource.com/c/platform/external/skia/+/785816
- If SkPngCodec hits an error, still transform from the
interlace buffer (if needed) and set rowsDecoded properly.
- Do not copy uninitialized memory from the interlace buffer.
- Make BRD treat kErrorInInput like kIncompleteInput. The two errors
are different for the purposes of incremental decode. For a direct
decode, they're essentially the same - part was decoded, but then
the decode was interrupted. This allows testing images with
errors on the bots without reporting a failure.
- Add some images to test incomplete pngs
- errorInInput.png: color_wheel.png truncated with extra 0s at the
end to trigger kErrorInInput
- incInterlaced.png: basi3p02.png (from PNGSuite) similarly modified.
This triggers kIncompleteInput. We have several incomplete PNGs that
we are testing on the bots, but this is the first interlaced
- errorInInputInterlaced.png: This is the same as incInterlaced with
more zeroes at the end. The incorrect CRC (all zeroes) results in
kErrorInInput
Change-Id: I25e1ea917e1c1ca212f104cb9d70290265a51b2d
Reviewed-on: https://skia-review.googlesource.com/c/161822
Commit-Queue: Leon Scroggins <scroggo@google.com>
Reviewed-by: Kevin Lubick <kjlubick@google.com>
5 files changed