summaryrefslogtreecommitdiff
path: root/core/src/fpdfapi/fpdf_parser/fpdf_parser_parser.cpp
diff options
context:
space:
mode:
authorDan Sinclair <dsinclair@chromium.org>2015-10-21 11:07:42 -0400
committerDan Sinclair <dsinclair@chromium.org>2015-10-21 11:07:42 -0400
commit43ce9035a026c7b4f15aa938dc39444d9253ea9f (patch)
tree8f18c1508dfd0db47d9dec1dbc708fd018349b3f /core/src/fpdfapi/fpdf_parser/fpdf_parser_parser.cpp
parent1edb860fd465879311ec85c5c6385067b7985013 (diff)
downloadpdfium-43ce9035a026c7b4f15aa938dc39444d9253ea9f.tar.xz
Merge to XFA: Add type cast definitions for CPDF_Number.
This Cl adds ToNumber, CPDF_Object::AsNumber and CPDF_Object::IsNumber and updates the src to use them as needed. BUG=pdfium:201 TBR=thestig@chromium.org Review URL: https://codereview.chromium.org/1410673005 . (cherry picked from commit 83bf02dfb860a66d756434d194118dae572d04d3) Review URL: https://codereview.chromium.org/1422583002 .
Diffstat (limited to 'core/src/fpdfapi/fpdf_parser/fpdf_parser_parser.cpp')
-rw-r--r--core/src/fpdfapi/fpdf_parser/fpdf_parser_parser.cpp51
1 files changed, 25 insertions, 26 deletions
diff --git a/core/src/fpdfapi/fpdf_parser/fpdf_parser_parser.cpp b/core/src/fpdfapi/fpdf_parser/fpdf_parser_parser.cpp
index 6839c07c07..036b293792 100644
--- a/core/src/fpdfapi/fpdf_parser/fpdf_parser_parser.cpp
+++ b/core/src/fpdfapi/fpdf_parser/fpdf_parser_parser.cpp
@@ -45,10 +45,8 @@ int32_t GetHeaderOffset(IFX_FileRead* pFile) {
}
int32_t GetDirectInteger(CPDF_Dictionary* pDict, const CFX_ByteStringC& key) {
- CPDF_Object* pObj = pDict->GetElement(key);
- if (pObj && (pObj->GetType() == PDFOBJ_NUMBER))
- return ((CPDF_Number*)pObj)->GetInteger();
- return 0;
+ CPDF_Number* pObj = ToNumber(pDict->GetElement(key));
+ return pObj ? pObj->GetInteger() : 0;
}
bool CheckDirectType(CPDF_Dictionary* pDict,
@@ -1048,8 +1046,7 @@ FX_BOOL CPDF_Parser::LoadCrossRefV5(FX_FILESIZE pos,
for (FX_DWORD i = 0; i < nPairSize; i++) {
CPDF_Object* pStartNumObj = pArray->GetElement(i * 2);
CPDF_Object* pCountObj = pArray->GetElement(i * 2 + 1);
- if (pStartNumObj && pStartNumObj->GetType() == PDFOBJ_NUMBER &&
- pCountObj && pCountObj->GetType() == PDFOBJ_NUMBER) {
+ if (ToNumber(pStartNumObj) && ToNumber(pCountObj)) {
int nStartNum = pStartNumObj->GetInteger();
int nCount = pCountObj->GetInteger();
if (nStartNum >= 0 && nCount > 0) {
@@ -1551,10 +1548,12 @@ FX_BOOL CPDF_Parser::IsLinearizedFile(IFX_FileRead* pFileAccess,
if (!m_pLinearized) {
return FALSE;
}
- if (m_pLinearized->GetDict() &&
- m_pLinearized->GetDict()->GetElement(FX_BSTRC("Linearized"))) {
+
+ CPDF_Dictionary* pDict = m_pLinearized->GetDict();
+ if (pDict && pDict->GetElement(FX_BSTRC("Linearized"))) {
m_Syntax.GetNextWord(bIsNumber);
- CPDF_Object* pLen = m_pLinearized->GetDict()->GetElement(FX_BSTRC("L"));
+
+ CPDF_Object* pLen = pDict->GetElement(FX_BSTRC("L"));
if (!pLen) {
m_pLinearized->Release();
m_pLinearized = NULL;
@@ -1563,14 +1562,13 @@ FX_BOOL CPDF_Parser::IsLinearizedFile(IFX_FileRead* pFileAccess,
if (pLen->GetInteger() != (int)pFileAccess->GetSize()) {
return FALSE;
}
- CPDF_Object* pNo = m_pLinearized->GetDict()->GetElement(FX_BSTRC("P"));
- if (pNo && pNo->GetType() == PDFOBJ_NUMBER) {
+
+ if (CPDF_Number* pNo = ToNumber(pDict->GetElement(FX_BSTRC("P"))))
m_dwFirstPageNo = pNo->GetInteger();
- }
- CPDF_Object* pTable = m_pLinearized->GetDict()->GetElement(FX_BSTRC("T"));
- if (pTable && pTable->GetType() == PDFOBJ_NUMBER) {
+
+ if (CPDF_Number* pTable = ToNumber(pDict->GetElement(FX_BSTRC("T"))))
m_LastXRefOffset = pTable->GetInteger();
- }
+
return TRUE;
}
m_pLinearized->Release();
@@ -3627,7 +3625,7 @@ FX_BOOL CPDF_DataAvail::CheckFirstPage(IFX_DownloadHints* pHints) {
return FALSE;
}
FX_BOOL bNeedDownLoad = FALSE;
- if (pEndOffSet->GetType() == PDFOBJ_NUMBER) {
+ if (pEndOffSet->IsNumber()) {
FX_DWORD dwEnd = pEndOffSet->GetInteger();
dwEnd += 512;
if ((FX_FILESIZE)dwEnd > m_dwFileLen) {
@@ -3642,12 +3640,12 @@ FX_BOOL CPDF_DataAvail::CheckFirstPage(IFX_DownloadHints* pHints) {
}
m_dwLastXRefOffset = 0;
FX_FILESIZE dwFileLen = 0;
- if (pXRefOffset->GetType() == PDFOBJ_NUMBER) {
+ if (pXRefOffset->IsNumber())
m_dwLastXRefOffset = pXRefOffset->GetInteger();
- }
- if (pFileLen->GetType() == PDFOBJ_NUMBER) {
+
+ if (pFileLen->IsNumber())
dwFileLen = pFileLen->GetInteger();
- }
+
if (!m_pFileAvail->IsDataAvail(m_dwLastXRefOffset,
(FX_DWORD)(dwFileLen - m_dwLastXRefOffset))) {
if (m_docStatus == PDF_DATAAVAIL_FIRSTPAGE) {
@@ -3739,9 +3737,10 @@ FX_BOOL CPDF_DataAvail::IsLinearizedFile(uint8_t* pData, FX_DWORD dwLen) {
if (!m_pLinearized) {
return FALSE;
}
- if (m_pLinearized->GetDict() &&
- m_pLinearized->GetDict()->GetElement(FX_BSTRC("Linearized"))) {
- CPDF_Object* pLen = m_pLinearized->GetDict()->GetElement(FX_BSTRC("L"));
+
+ CPDF_Dictionary* pDict = m_pLinearized->GetDict();
+ if (pDict && pDict->GetElement(FX_BSTRC("Linearized"))) {
+ CPDF_Object* pLen = pDict->GetElement(FX_BSTRC("L"));
if (!pLen) {
return FALSE;
}
@@ -3749,10 +3748,10 @@ FX_BOOL CPDF_DataAvail::IsLinearizedFile(uint8_t* pData, FX_DWORD dwLen) {
return FALSE;
}
m_bLinearized = TRUE;
- CPDF_Object* pNo = m_pLinearized->GetDict()->GetElement(FX_BSTRC("P"));
- if (pNo && pNo->GetType() == PDFOBJ_NUMBER) {
+
+ if (CPDF_Number* pNo = ToNumber(pDict->GetElement(FX_BSTRC("P"))))
m_dwFirstPageNo = pNo->GetInteger();
- }
+
return TRUE;
}
return FALSE;