| Index: core/fpdfapi/page/cpdf_image.cpp
|
| diff --git a/core/fpdfapi/page/cpdf_image.cpp b/core/fpdfapi/page/cpdf_image.cpp
|
| index a17222e3430d39ccf58afc1809d2d9ae436a0909..216c3dbf35a415933e96a85da343eab26d114150 100644
|
| --- a/core/fpdfapi/page/cpdf_image.cpp
|
| +++ b/core/fpdfapi/page/cpdf_image.cpp
|
| @@ -117,12 +117,16 @@ std::unique_ptr<CPDF_Dictionary> CPDF_Image::InitJPEG(uint8_t* pData,
|
| }
|
|
|
| void CPDF_Image::SetJpegImage(
|
| - const CFX_RetainPtr<IFX_SeekableReadStream>& pFile) {
|
| + const CFX_RetainPtr<IFX_SeekableReadStream>& pFile,
|
| + bool inlineImage) {
|
| uint32_t size = pdfium::base::checked_cast<uint32_t>(pFile->GetSize());
|
| if (!size)
|
| return;
|
|
|
| - uint32_t dwEstimateSize = std::min(size, 8192U);
|
| + uint32_t dwEstimateSize = size;
|
| + if (!inlineImage)
|
| + dwEstimateSize = std::min(size, 8192U);
|
| +
|
| std::vector<uint8_t> data(dwEstimateSize);
|
| if (!pFile->ReadBlock(data.data(), 0, dwEstimateSize))
|
| return;
|
| @@ -137,7 +141,10 @@ void CPDF_Image::SetJpegImage(
|
| if (!pDict)
|
| return;
|
|
|
| - m_pStream->InitStreamFromFile(pFile, std::move(pDict));
|
| + if (inlineImage)
|
| + m_pStream->InitStream(&(data[0]), size, std::move(pDict));
|
| + else
|
| + m_pStream->InitStreamFromFile(pFile, std::move(pDict));
|
| }
|
|
|
| void CPDF_Image::SetImage(const CFX_DIBitmap* pBitmap) {
|
|
|