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) { |