Index: core/src/fpdfapi/fpdf_parser/fpdf_parser_parser.cpp |
diff --git a/core/src/fpdfapi/fpdf_parser/fpdf_parser_parser.cpp b/core/src/fpdfapi/fpdf_parser/fpdf_parser_parser.cpp |
index 010b9b7c47213306e2d0d0a6ef1e50dbbd5cf9e5..ad97d1f3696de7929a92287c5e98990606791175 100644 |
--- a/core/src/fpdfapi/fpdf_parser/fpdf_parser_parser.cpp |
+++ b/core/src/fpdfapi/fpdf_parser/fpdf_parser_parser.cpp |
@@ -360,13 +360,15 @@ FX_BOOL CPDF_Parser::LoadAllCrossRefV4(FX_FILESIZE xrefpos) { |
if (!m_pTrailer) { |
return FALSE; |
} |
+ |
int32_t xrefsize = GetDirectInteger(m_pTrailer, "Size"); |
if (xrefsize <= 0 || xrefsize > kMaxXRefSize) { |
return FALSE; |
} |
m_ObjectInfo[0].pos = 0; |
m_V5Type.SetSize(xrefsize); |
- CFX_FileSizeArray CrossRefList, XRefStreamList; |
+ CFX_FileSizeArray CrossRefList; |
+ CFX_FileSizeArray XRefStreamList; |
CrossRefList.Add(xrefpos); |
XRefStreamList.Add(GetDirectInteger(m_pTrailer, "XRefStm")); |
@@ -1416,9 +1418,8 @@ CPDF_Object* CPDF_Parser::ParseIndirectObjectAt(CPDF_IndirectObjects* pObjList, |
} |
m_Syntax.RestorePos(SavedPos); |
if (pObj) { |
- if (!objnum) { |
+ if (!objnum) |
pObj->m_ObjNum = parser_objnum; |
- } |
pObj->m_GenNum = parser_gennum; |
} |
return pObj; |
@@ -1582,8 +1583,9 @@ FX_DWORD CPDF_Parser::StartAsynParse(IFX_FileRead* pFileAccess, |
if (bLoadV4) { |
m_pTrailer = LoadTrailerV4(); |
if (!m_pTrailer) { |
- return FALSE; |
+ return PDFPARSE_ERROR_SUCCESS; |
} |
+ |
int32_t xrefsize = GetDirectInteger(m_pTrailer, "Size"); |
if (xrefsize > 0) { |
m_ObjectInfo[0].pos = 0; |
@@ -2759,7 +2761,6 @@ class CPDF_DataAvail final : public IPDF_DataAvail { |
FX_BOOL LoadAllXref(IFX_DownloadHints* pHints); |
FX_BOOL LoadAllFile(IFX_DownloadHints* pHints); |
int32_t CheckLinearizedData(IFX_DownloadHints* pHints); |
- FX_BOOL CheckFileResources(IFX_DownloadHints* pHints); |
FX_BOOL CheckPageAnnots(int iPage, IFX_DownloadHints* pHints); |
FX_BOOL CheckLinearizedFirstPage(int iPage, IFX_DownloadHints* pHints); |
@@ -4296,7 +4297,7 @@ int CPDF_DataAvail::CheckLinearizedData(IFX_DownloadHints* pHints) { |
pHints->AddSegment(m_dwLastXRefOffset, data_size.ValueOrDie()); |
return DataNotAvailable; |
} |
- FX_DWORD dwRet = (m_pDocument->GetParser())->LoadLinearizedMainXRefTable(); |
+ FX_DWORD dwRet = m_pDocument->GetParser()->LoadLinearizedMainXRefTable(); |
m_bMainXRefLoadTried = TRUE; |
if (dwRet != PDFPARSE_ERROR_SUCCESS) { |
return DataError; |
@@ -4929,6 +4930,7 @@ int32_t CPDF_HintTables::CheckPage(int index, IFX_DownloadHints* pHints) { |
} |
return IPDF_DataAvail::DataAvailable; |
} |
+ |
FX_BOOL CPDF_HintTables::LoadHintStream(CPDF_Stream* pHintStream) { |
if (!pHintStream || !m_pLinearizedDict) |
return FALSE; |
@@ -4954,6 +4956,7 @@ FX_BOOL CPDF_HintTables::LoadHintStream(CPDF_Stream* pHintStream) { |
ReadSharedObjHintTable(&bs, pdfium::base::checked_cast<FX_DWORD>( |
shared_hint_table_offset)); |
} |
+ |
int CPDF_HintTables::ReadPrimaryHintStreamOffset() const { |
if (!m_pLinearizedDict) |
return -1; |