summaryrefslogtreecommitdiff
path: root/core/fpdfapi/parser/cpdf_linearized_header.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'core/fpdfapi/parser/cpdf_linearized_header.cpp')
-rw-r--r--core/fpdfapi/parser/cpdf_linearized_header.cpp29
1 files changed, 16 insertions, 13 deletions
diff --git a/core/fpdfapi/parser/cpdf_linearized_header.cpp b/core/fpdfapi/parser/cpdf_linearized_header.cpp
index ce22c55f48..3251a5eb9f 100644
--- a/core/fpdfapi/parser/cpdf_linearized_header.cpp
+++ b/core/fpdfapi/parser/cpdf_linearized_header.cpp
@@ -70,22 +70,25 @@ std::unique_ptr<CPDF_LinearizedHeader> CPDF_LinearizedHeader::Parse(
if (parser->GetNextWord(nullptr) != "endobj")
return nullptr;
- auto result = pdfium::WrapUnique(new CPDF_LinearizedHeader(pDict.get()));
- result->m_szLastXRefOffset = parser->GetPos();
+ auto result = pdfium::WrapUnique(
+ new CPDF_LinearizedHeader(pDict.get(), parser->GetPos()));
- return IsLinearizedHeaderValid(result.get(),
- parser->GetFileAccess()->GetSize())
- ? std::move(result)
- : nullptr;
+ if (!IsLinearizedHeaderValid(result.get(),
+ parser->GetFileAccess()->GetSize())) {
+ return nullptr;
+ }
+ return result;
}
-CPDF_LinearizedHeader::CPDF_LinearizedHeader(const CPDF_Dictionary* pDict) {
- m_szFileSize = pDict->GetIntegerFor("L");
- m_dwFirstPageNo = pDict->GetIntegerFor("P");
- m_szMainXRefTableFirstEntryOffset = pDict->GetIntegerFor("T");
- m_PageCount = pDict->GetIntegerFor("N");
- m_szFirstPageEndOffset = pDict->GetIntegerFor("E");
- m_FirstPageObjNum = pDict->GetIntegerFor("O");
+CPDF_LinearizedHeader::CPDF_LinearizedHeader(const CPDF_Dictionary* pDict,
+ FX_FILESIZE szLastXRefOffset)
+ : m_szFileSize(pDict->GetIntegerFor("L")),
+ m_dwFirstPageNo(pDict->GetIntegerFor("P")),
+ m_szMainXRefTableFirstEntryOffset(pDict->GetIntegerFor("T")),
+ m_PageCount(pDict->GetIntegerFor("N")),
+ m_szFirstPageEndOffset(pDict->GetIntegerFor("E")),
+ m_FirstPageObjNum(pDict->GetIntegerFor("O")),
+ m_szLastXRefOffset(szLastXRefOffset) {
const CPDF_Array* pHintStreamRange = pDict->GetArrayFor("H");
const size_t nHintStreamSize =
pHintStreamRange ? pHintStreamRange->GetCount() : 0;