Index: src/codec/SkJpegCodec.cpp |
diff --git a/src/codec/SkJpegCodec.cpp b/src/codec/SkJpegCodec.cpp |
index 2eaff1a9a67f47be24d70c6e7dddba21fd056350..4eb63cc925536e9485c7d8a3c3b2e5b94236320d 100644 |
--- a/src/codec/SkJpegCodec.cpp |
+++ b/src/codec/SkJpegCodec.cpp |
@@ -297,6 +297,12 @@ SkCodec::Result SkJpegCodec::onGetPixels(const SkImageInfo& dstInfo, |
void* dst, size_t dstRowBytes, |
const Options& options, SkPMColor*, int*) { |
+ // Do not allow a regular decode if the caller has asked for a scanline decoder |
+ if (NULL != this->scanlineDecoder()) { |
+ fDecoderMgr->returnFailure("cannot getPixels() if a scanline decoder has been created", |
scroggo
2015/06/29 21:33:22
I think this should be:
return fDecoderMgr->.
msarett
2015/06/29 21:59:43
Yeah it should be!
|
+ kInvalidInput); |
+ } |
+ |
// Rewind the stream if needed |
if (!this->handleRewind()) { |
fDecoderMgr->returnFailure("could not rewind stream", kCouldNotRewind); |
scroggo
2015/06/29 21:33:22
Again, this should be a return statement, right?
msarett
2015/06/29 21:59:43
Yep this is wrong too. That's what you get when y
|
@@ -449,6 +455,9 @@ public: |
return; |
} |
+ // We may not have decoded the entire image. Prevent libjpeg-turbo from failing on a |
+ // partial decode. |
+ fCodec->fDecoderMgr->dinfo()->output_scanline = dstInfo().height(); |
jpeg_finish_decompress(fCodec->fDecoderMgr->dinfo()); |
} |