| 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 514380eeab7cc8e9b1168f244bc454ece8d2eb02..8b822a8b9c686c19724e3680415b7ff50bd422d7 100644
|
| --- a/core/src/fpdfapi/fpdf_parser/fpdf_parser_parser.cpp
|
| +++ b/core/src/fpdfapi/fpdf_parser/fpdf_parser_parser.cpp
|
| @@ -1154,17 +1154,14 @@ FX_BOOL CPDF_Parser::LoadCrossRefV5(FX_FILESIZE pos,
|
| }
|
| CPDF_Array* CPDF_Parser::GetIDArray() {
|
| CPDF_Object* pID = m_pTrailer ? m_pTrailer->GetElement(FX_BSTRC("ID")) : NULL;
|
| - if (pID == NULL) {
|
| - return NULL;
|
| - }
|
| + if (!pID)
|
| + return nullptr;
|
| +
|
| if (pID->GetType() == PDFOBJ_REFERENCE) {
|
| pID = ParseIndirectObject(NULL, ((CPDF_Reference*)pID)->GetRefObjNum());
|
| m_pTrailer->SetAt(FX_BSTRC("ID"), pID);
|
| }
|
| - if (pID == NULL || pID->GetType() != PDFOBJ_ARRAY) {
|
| - return NULL;
|
| - }
|
| - return (CPDF_Array*)pID;
|
| + return ToArray(pID);
|
| }
|
| FX_DWORD CPDF_Parser::GetRootObjNum() {
|
| CPDF_Object* pRef =
|
| @@ -3474,7 +3471,7 @@ FX_BOOL CPDF_DataAvail::CheckPage(IFX_DownloadHints* pHints) {
|
| }
|
| continue;
|
| }
|
| - if (pObj->GetType() == PDFOBJ_ARRAY) {
|
| + if (pObj->IsArray()) {
|
| CPDF_Array* pArray = pObj->GetArray();
|
| if (pArray) {
|
| int32_t iSize = pArray->GetCount();
|
| @@ -3543,7 +3540,7 @@ FX_BOOL CPDF_DataAvail::GetPageKids(CPDF_Parser* pParser, CPDF_Object* pPages) {
|
| m_PageObjList.Add(pKid->GetRefObjNum());
|
| } break;
|
| case PDFOBJ_ARRAY: {
|
| - CPDF_Array* pKidsArray = (CPDF_Array*)pKids;
|
| + CPDF_Array* pKidsArray = pKids->AsArray();
|
| for (FX_DWORD i = 0; i < pKidsArray->GetCount(); ++i) {
|
| CPDF_Object* pKid = (CPDF_Object*)pKidsArray->GetElement(i);
|
| if (pKid && pKid->GetType() == PDFOBJ_REFERENCE) {
|
| @@ -4116,13 +4113,15 @@ FX_BOOL CPDF_DataAvail::CheckArrayPageNode(FX_DWORD dwPageNo,
|
| }
|
| return FALSE;
|
| }
|
| - if (pPages->GetType() != PDFOBJ_ARRAY) {
|
| +
|
| + CPDF_Array* pArray = pPages->AsArray();
|
| + if (!pArray) {
|
| pPages->Release();
|
| m_docStatus = PDF_DATAAVAIL_ERROR;
|
| return FALSE;
|
| }
|
| +
|
| pPageNode->m_type = PDF_PAGENODE_PAGES;
|
| - CPDF_Array* pArray = (CPDF_Array*)pPages;
|
| for (FX_DWORD i = 0; i < pArray->GetCount(); ++i) {
|
| CPDF_Object* pKid = (CPDF_Object*)pArray->GetElement(i);
|
| if (!pKid || pKid->GetType() != PDFOBJ_REFERENCE) {
|
| @@ -4151,7 +4150,7 @@ FX_BOOL CPDF_DataAvail::CheckUnkownPageNode(FX_DWORD dwPageNo,
|
| }
|
| return FALSE;
|
| }
|
| - if (pPage->GetType() == PDFOBJ_ARRAY) {
|
| + if (pPage->IsArray()) {
|
| pPageNode->m_dwPageNo = dwPageNo;
|
| pPageNode->m_type = PDF_PAGENODE_ARRAY;
|
| pPage->Release();
|
| @@ -4180,7 +4179,7 @@ FX_BOOL CPDF_DataAvail::CheckUnkownPageNode(FX_DWORD dwPageNo,
|
| pNode->m_dwPageNo = pKid->GetRefObjNum();
|
| } break;
|
| case PDFOBJ_ARRAY: {
|
| - CPDF_Array* pKidsArray = (CPDF_Array*)pKids;
|
| + CPDF_Array* pKidsArray = pKids->AsArray();
|
| for (FX_DWORD i = 0; i < pKidsArray->GetCount(); ++i) {
|
| CPDF_Object* pKid = (CPDF_Object*)pKidsArray->GetElement(i);
|
| if (!pKid || pKid->GetType() != PDFOBJ_REFERENCE) {
|
|
|