| Index: core/src/fpdfapi/fpdf_parser/fpdf_parser_objects.cpp
|
| diff --git a/core/src/fpdfapi/fpdf_parser/fpdf_parser_objects.cpp b/core/src/fpdfapi/fpdf_parser/fpdf_parser_objects.cpp
|
| index 592a7b13265dc3fb403734af9ca9db9ae0d84823..e1e821c4c5e3d1c0d22bc36cee94ff2f9c403106 100644
|
| --- a/core/src/fpdfapi/fpdf_parser/fpdf_parser_objects.cpp
|
| +++ b/core/src/fpdfapi/fpdf_parser/fpdf_parser_objects.cpp
|
| @@ -53,7 +53,7 @@ CFX_ByteString CPDF_Object::GetString() const {
|
| break;
|
| }
|
| CPDF_Object* pObj =
|
| - pRef->m_pObjList->GetIndirectObject(pRef->m_RefObjNum);
|
| + pRef->m_pObjList->GetIndirectObject(pRef->GetRefObjNum());
|
| if (pObj == NULL) {
|
| return CFX_ByteString();
|
| }
|
| @@ -76,7 +76,7 @@ CFX_ByteStringC CPDF_Object::GetConstString() const {
|
| break;
|
| }
|
| CPDF_Object* pObj =
|
| - pRef->m_pObjList->GetIndirectObject(pRef->m_RefObjNum);
|
| + pRef->m_pObjList->GetIndirectObject(pRef->GetRefObjNum());
|
| if (pObj == NULL) {
|
| return CFX_ByteStringC();
|
| }
|
| @@ -95,7 +95,7 @@ FX_FLOAT CPDF_Object::GetNumber() const {
|
| break;
|
| }
|
| CPDF_Object* pObj =
|
| - pRef->m_pObjList->GetIndirectObject(pRef->m_RefObjNum);
|
| + pRef->m_pObjList->GetIndirectObject(pRef->GetRefObjNum());
|
| if (pObj == NULL) {
|
| return 0;
|
| }
|
| @@ -125,7 +125,7 @@ int CPDF_Object::GetInteger() const {
|
| return 0;
|
| }
|
| CPDF_Object* pObj =
|
| - pRef->m_pObjList->GetIndirectObject(pRef->m_RefObjNum, &context);
|
| + pRef->m_pObjList->GetIndirectObject(pRef->GetRefObjNum(), &context);
|
| if (pObj == NULL) {
|
| return 0;
|
| }
|
| @@ -134,6 +134,7 @@ int CPDF_Object::GetInteger() const {
|
| }
|
| return 0;
|
| }
|
| +
|
| CPDF_Dictionary* CPDF_Object::GetDict() const {
|
| switch (m_Type) {
|
| case PDFOBJ_DICTIONARY:
|
| @@ -142,19 +143,19 @@ CPDF_Dictionary* CPDF_Object::GetDict() const {
|
| return ((CPDF_Stream*)this)->GetDict();
|
| case PDFOBJ_REFERENCE: {
|
| CPDF_Reference* pRef = (CPDF_Reference*)this;
|
| - if (pRef->m_pObjList == NULL) {
|
| - break;
|
| - }
|
| - CPDF_Object* pObj =
|
| - pRef->m_pObjList->GetIndirectObject(pRef->m_RefObjNum);
|
| - if (pObj == NULL) {
|
| - return NULL;
|
| - }
|
| + CPDF_IndirectObjects* pIndirect = pRef->GetObjList();
|
| + if (!pIndirect)
|
| + return nullptr;
|
| + CPDF_Object* pObj = pIndirect->GetIndirectObject(pRef->GetRefObjNum());
|
| + if (!pObj || (pObj == this))
|
| + return nullptr;
|
| return pObj->GetDict();
|
| }
|
| + default:
|
| + return nullptr;
|
| }
|
| - return NULL;
|
| }
|
| +
|
| CPDF_Array* CPDF_Object::GetArray() const {
|
| if (m_Type == PDFOBJ_ARRAY)
|
| return (CPDF_Array*)this;
|
| @@ -184,7 +185,7 @@ int CPDF_Object::GetDirectType() const {
|
| return m_Type;
|
| }
|
| CPDF_Reference* pRef = (CPDF_Reference*)this;
|
| - return pRef->m_pObjList->GetIndirectType(pRef->m_RefObjNum);
|
| + return pRef->m_pObjList->GetIndirectType(pRef->GetRefObjNum());
|
| }
|
| FX_BOOL CPDF_Object::IsIdentical(CPDF_Object* pOther) const {
|
| if (this == pOther) {
|
| @@ -232,7 +233,7 @@ CPDF_Object* CPDF_Object::GetDirect() const {
|
| if (pRef->m_pObjList == NULL) {
|
| return NULL;
|
| }
|
| - return pRef->m_pObjList->GetIndirectObject(pRef->m_RefObjNum);
|
| + return pRef->m_pObjList->GetIndirectObject(pRef->GetRefObjNum());
|
| }
|
| CPDF_Object* CPDF_Object::Clone(FX_BOOL bDirect) const {
|
| CFX_MapPtrToPtr visited;
|
| @@ -289,7 +290,7 @@ CPDF_Object* CPDF_Object::CloneInternal(FX_BOOL bDirect,
|
| }
|
| case PDFOBJ_REFERENCE: {
|
| CPDF_Reference* pRef = (CPDF_Reference*)this;
|
| - FX_DWORD obj_num = pRef->m_RefObjNum;
|
| + FX_DWORD obj_num = pRef->GetRefObjNum();
|
| if (bDirect && !visited->GetValueAt((void*)(uintptr_t)obj_num)) {
|
| visited->SetAt((void*)(uintptr_t)obj_num, (void*)1);
|
| if (!pRef->GetDirect())
|
|
|