| Index: src/codec/SkJpegCodec.cpp
|
| diff --git a/src/codec/SkJpegCodec.cpp b/src/codec/SkJpegCodec.cpp
|
| index 2eea46bb2bb07caa64fc0c6cbc2a396769064e5f..8096a29f49866ebd21a0bc1234ea8e0215b68d19 100644
|
| --- a/src/codec/SkJpegCodec.cpp
|
| +++ b/src/codec/SkJpegCodec.cpp
|
| @@ -353,6 +353,10 @@ bool SkJpegCodec::onRewind() {
|
| fStorage.reset();
|
| fColorXform.reset(nullptr);
|
|
|
| +#if !defined(TURBO_HAS_SKIP)
|
| + fSkipStorage.reset();
|
| +#endif
|
| +
|
| return true;
|
| }
|
|
|
| @@ -788,13 +792,14 @@ bool SkJpegCodec::onSkipScanlines(int count) {
|
| #ifdef TURBO_HAS_SKIP
|
| return (uint32_t) count == jpeg_skip_scanlines(fDecoderMgr->dinfo(), count);
|
| #else
|
| - if (!fSwizzleSrcRow) {
|
| - fStorage.reset(get_row_bytes(fDecoderMgr->dinfo()));
|
| - fSwizzleSrcRow = fStorage.get();
|
| + uint8_t* ptr = fSkipStorage.get();
|
| + if (!ptr) {
|
| + fSkipStorage.reset(get_row_bytes(fDecoderMgr->dinfo()));
|
| + ptr = fSkipStorage.get();
|
| }
|
|
|
| for (int y = 0; y < count; y++) {
|
| - if (1 != jpeg_read_scanlines(fDecoderMgr->dinfo(), &fSwizzleSrcRow, 1)) {
|
| + if (1 != jpeg_read_scanlines(fDecoderMgr->dinfo(), &ptr, 1)) {
|
| return false;
|
| }
|
| }
|
|
|