Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1238)

Unified Diff: core/fpdfapi/parser/cpdf_parser.cpp

Issue 2474283005: Revert of Unify some code (Closed)
Patch Set: Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « core/fpdfapi/parser/cpdf_parser.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: core/fpdfapi/parser/cpdf_parser.cpp
diff --git a/core/fpdfapi/parser/cpdf_parser.cpp b/core/fpdfapi/parser/cpdf_parser.cpp
index 044d12d6ef882c173ed30d3371eaca4ff55a3661..c8c07bd0b7053f02e7e0cae312bae97bb71359cf 100644
--- a/core/fpdfapi/parser/cpdf_parser.cpp
+++ b/core/fpdfapi/parser/cpdf_parser.cpp
@@ -12,7 +12,6 @@
#include "core/fpdfapi/parser/cpdf_crypto_handler.h"
#include "core/fpdfapi/parser/cpdf_dictionary.h"
#include "core/fpdfapi/parser/cpdf_document.h"
-#include "core/fpdfapi/parser/cpdf_linearized.h"
#include "core/fpdfapi/parser/cpdf_number.h"
#include "core/fpdfapi/parser/cpdf_reference.h"
#include "core/fpdfapi/parser/cpdf_security_handler.h"
@@ -55,6 +54,8 @@
m_pTrailer(nullptr),
m_pEncryptDict(nullptr),
m_bVersionUpdated(false),
+ m_pLinearized(nullptr),
+ m_dwFirstPageNo(0),
m_dwXrefStartObjNum(0) {
m_pSyntax.reset(new CPDF_SyntaxParser);
}
@@ -71,6 +72,8 @@
for (CPDF_Dictionary* trailer : m_Trailers)
delete trailer;
+
+ delete m_pLinearized;
}
uint32_t CPDF_Parser::GetLastObjNum() const {
@@ -1399,10 +1402,6 @@
return pObj;
}
-uint32_t CPDF_Parser::GetFirstPageNo() const {
- return m_pLinearized ? m_pLinearized->GetFirstPageNo() : 0;
-}
-
CPDF_Dictionary* CPDF_Parser::LoadTrailerV4() {
if (m_pSyntax->GetKeyword() != "trailer")
return nullptr;
@@ -1449,14 +1448,35 @@
return false;
}
- m_pLinearized = CPDF_Linearized::CreateForObject(
- pdfium::WrapUnique(m_pSyntax->GetObject(nullptr, objnum, gennum, true)));
+ m_pLinearized = m_pSyntax->GetObject(nullptr, objnum, gennum, true);
if (!m_pLinearized)
return false;
- m_LastXRefOffset = m_pLinearized->GetLastXRefOffset();
- // Move parser onto first page xref table start.
- m_pSyntax->GetNextWord(nullptr);
- return true;
+
+ CPDF_Dictionary* pDict = m_pLinearized->GetDict();
+ if (pDict && pDict->GetObjectFor("Linearized")) {
+ m_pSyntax->GetNextWord(nullptr);
+
+ CPDF_Object* pLen = pDict->GetObjectFor("L");
+ if (!pLen) {
+ delete m_pLinearized;
+ m_pLinearized = nullptr;
+ return false;
+ }
+
+ if (pLen->GetInteger() != (int)pFileAccess->GetSize())
+ return false;
+
+ if (CPDF_Number* pNo = ToNumber(pDict->GetObjectFor("P")))
+ m_dwFirstPageNo = pNo->GetInteger();
+
+ if (CPDF_Number* pTable = ToNumber(pDict->GetObjectFor("T")))
+ m_LastXRefOffset = pTable->GetInteger();
+
+ return true;
+ }
+ delete m_pLinearized;
+ m_pLinearized = nullptr;
+ return false;
}
CPDF_Parser::Error CPDF_Parser::StartLinearizedParse(
@@ -1505,7 +1525,7 @@
if (eRet != SUCCESS)
return eRet;
- m_pDocument->LoadLinearizedDoc(m_pLinearized.get());
+ m_pDocument->LoadLinearizedDoc(m_pLinearized->GetDict());
if (!m_pDocument->GetRoot() || m_pDocument->GetPageCount() == 0) {
if (bXRefRebuilt)
return FORMAT_ERROR;
@@ -1518,7 +1538,7 @@
if (eRet != SUCCESS)
return eRet;
- m_pDocument->LoadLinearizedDoc(m_pLinearized.get());
+ m_pDocument->LoadLinearizedDoc(m_pLinearized->GetDict());
if (!m_pDocument->GetRoot())
return FORMAT_ERROR;
}
« no previous file with comments | « core/fpdfapi/parser/cpdf_parser.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698