Index: core/fpdfapi/parser/cpdf_data_avail.cpp |
diff --git a/core/fpdfapi/parser/cpdf_data_avail.cpp b/core/fpdfapi/parser/cpdf_data_avail.cpp |
index 248748470c259c112848e60c384e3035eddef331..76ea73d80f89970466c2df58a6490c4004c43831 100644 |
--- a/core/fpdfapi/parser/cpdf_data_avail.cpp |
+++ b/core/fpdfapi/parser/cpdf_data_avail.cpp |
@@ -33,9 +33,10 @@ CPDF_DataAvail::DownloadHints::~DownloadHints() {} |
// static |
int CPDF_DataAvail::s_CurrentDataAvailRecursionDepth = 0; |
-CPDF_DataAvail::CPDF_DataAvail(FileAvail* pFileAvail, |
- IFX_SeekableReadStream* pFileRead, |
- bool bSupportHintTable) |
+CPDF_DataAvail::CPDF_DataAvail( |
+ FileAvail* pFileAvail, |
+ const CFX_RetainPtr<IFX_SeekableReadStream>& pFileRead, |
+ bool bSupportHintTable) |
: m_pFileAvail(pFileAvail), m_pFileRead(pFileRead) { |
m_Pos = 0; |
m_dwFileLen = 0; |
@@ -72,7 +73,6 @@ CPDF_DataAvail::CPDF_DataAvail(FileAvail* pFileAvail, |
m_pPageDict = nullptr; |
m_pPageResource = nullptr; |
m_docStatus = PDF_DATAAVAIL_HEADER; |
- m_parser.m_bOwnFileRead = false; |
m_bTotalLoadPageTree = false; |
m_bCurPageDictLoadOK = false; |
m_bLinearedDataOK = false; |
@@ -320,7 +320,6 @@ bool CPDF_DataAvail::LoadAllFile(DownloadHints* pHints) { |
bool CPDF_DataAvail::LoadAllXref(DownloadHints* pHints) { |
m_parser.m_pSyntax->InitParser(m_pFileRead, (uint32_t)m_dwHeaderOffset); |
- m_parser.m_bOwnFileRead = false; |
if (!m_parser.LoadAllCrossRefV4(m_dwLastXRefOffset) && |
!m_parser.LoadAllCrossRefV5(m_dwLastXRefOffset)) { |
m_docStatus = PDF_DATAAVAIL_LOADALLFILE; |
@@ -718,15 +717,16 @@ bool CPDF_DataAvail::IsLinearizedFile(uint8_t* pData, uint32_t dwLen) { |
if (m_pLinearized) |
return true; |
- ScopedFileStream file(IFX_MemoryStream::Create(pData, (size_t)dwLen, false)); |
- int32_t offset = GetHeaderOffset(file.get()); |
+ CFX_RetainPtr<IFX_MemoryStream> file = |
+ IFX_MemoryStream::Create(pData, (size_t)dwLen, false); |
+ int32_t offset = GetHeaderOffset(file); |
if (offset == -1) { |
m_docStatus = PDF_DATAAVAIL_ERROR; |
return false; |
} |
m_dwHeaderOffset = offset; |
- m_syntaxParser.InitParser(file.get(), offset); |
+ m_syntaxParser.InitParser(file, offset); |
m_syntaxParser.RestorePos(m_syntaxParser.m_HeaderOffset + 9); |
bool bNumber; |
@@ -753,9 +753,9 @@ bool CPDF_DataAvail::CheckEnd(DownloadHints* pHints) { |
uint8_t buffer[1024]; |
m_pFileRead->ReadBlock(buffer, req_pos, dwSize); |
- ScopedFileStream file( |
- IFX_MemoryStream::Create(buffer, (size_t)dwSize, false)); |
- m_syntaxParser.InitParser(file.get(), 0); |
+ CFX_RetainPtr<IFX_MemoryStream> file = |
+ IFX_MemoryStream::Create(buffer, (size_t)dwSize, false); |
+ m_syntaxParser.InitParser(file, 0); |
m_syntaxParser.RestorePos(dwSize - 1); |
if (m_syntaxParser.SearchWord("startxref", true, false, dwSize)) { |
@@ -801,8 +801,9 @@ int32_t CPDF_DataAvail::CheckCrossRefStream(DownloadHints* pHints, |
m_pFileRead->ReadBlock(pBuf, m_dwCurrentXRefSteam, iSize); |
- ScopedFileStream file(IFX_MemoryStream::Create(pBuf, (size_t)iSize, false)); |
- m_parser.m_pSyntax->InitParser(file.get(), 0); |
+ CFX_RetainPtr<IFX_MemoryStream> file = |
+ IFX_MemoryStream::Create(pBuf, (size_t)iSize, false); |
+ m_parser.m_pSyntax->InitParser(file, 0); |
bool bNumber; |
CFX_ByteString objnum = m_parser.m_pSyntax->GetNextWord(&bNumber); |
@@ -1047,8 +1048,9 @@ bool CPDF_DataAvail::CheckTrailer(DownloadHints* pHints) { |
if (!m_pFileRead->ReadBlock(pBuf, m_dwTrailerOffset, iSize)) |
return false; |
- ScopedFileStream file(IFX_MemoryStream::Create(pBuf, (size_t)iSize, false)); |
- m_syntaxParser.InitParser(file.get(), 0); |
+ CFX_RetainPtr<IFX_MemoryStream> file = |
+ IFX_MemoryStream::Create(pBuf, (size_t)iSize, false); |
+ m_syntaxParser.InitParser(file, 0); |
std::unique_ptr<CPDF_Object> pTrailer( |
m_syntaxParser.GetObject(nullptr, 0, 0, true)); |