Index: core/src/fpdfdoc/doc_tagged.cpp |
diff --git a/core/src/fpdfdoc/doc_tagged.cpp b/core/src/fpdfdoc/doc_tagged.cpp |
index f74aa7f6f55e4e3aec9d03083b68c42f020bea34..f1877c657358469df6a14a66235b6c110e566988 100644 |
--- a/core/src/fpdfdoc/doc_tagged.cpp |
+++ b/core/src/fpdfdoc/doc_tagged.cpp |
@@ -173,10 +173,10 @@ FX_BOOL CPDF_StructTreeImpl::AddTopLevelNode(CPDF_Dictionary* pDict, |
FX_DWORD i; |
FX_BOOL bSave = FALSE; |
for (i = 0; i < pTopKids->GetCount(); i++) { |
- CPDF_Object* pKidRef = pTopKids->GetElement(i); |
- if (!pKidRef || pKidRef->GetType() != PDFOBJ_REFERENCE) |
+ CPDF_Reference* pKidRef = ToReference(pTopKids->GetElement(i)); |
+ if (!pKidRef) |
continue; |
- if (((CPDF_Reference*)pKidRef)->GetRefObjNum() != pDict->GetObjNum()) |
+ if (pKidRef->GetRefObjNum() != pDict->GetObjNum()) |
continue; |
if (m_Kids[i]) |
@@ -225,8 +225,8 @@ void CPDF_StructElementImpl::Release() { |
void CPDF_StructElementImpl::LoadKids(CPDF_Dictionary* pDict) { |
CPDF_Object* pObj = pDict->GetElement(FX_BSTRC("Pg")); |
FX_DWORD PageObjNum = 0; |
- if (pObj && pObj->GetType() == PDFOBJ_REFERENCE) |
- PageObjNum = ((CPDF_Reference*)pObj)->GetRefObjNum(); |
+ if (CPDF_Reference* pRef = ToReference(pObj)) |
+ PageObjNum = pRef->GetRefObjNum(); |
CPDF_Object* pKids = pDict->GetElementValue(FX_BSTRC("K")); |
if (!pKids) |
@@ -264,20 +264,18 @@ void CPDF_StructElementImpl::LoadKid(FX_DWORD PageObjNum, |
if (!pKidDict) |
return; |
- CPDF_Object* pPageObj = pKidDict->GetElement(FX_BSTRC("Pg")); |
- if (pPageObj && pPageObj->GetType() == PDFOBJ_REFERENCE) { |
- PageObjNum = ((CPDF_Reference*)pPageObj)->GetRefObjNum(); |
- } |
+ if (CPDF_Reference* pRef = ToReference(pKidDict->GetElement(FX_BSTRC("Pg")))) |
+ PageObjNum = pRef->GetRefObjNum(); |
+ |
CFX_ByteString type = pKidDict->GetString(FX_BSTRC("Type")); |
if (type == FX_BSTRC("MCR")) { |
if (m_pTree->m_pPage && m_pTree->m_pPage->GetObjNum() != PageObjNum) { |
return; |
} |
pKid->m_Type = CPDF_StructKid::StreamContent; |
- CPDF_Object* pStreamObj = pKidDict->GetElement(FX_BSTRC("Stm")); |
- if (pStreamObj && pStreamObj->GetType() == PDFOBJ_REFERENCE) { |
- pKid->m_StreamContent.m_RefObjNum = |
- ((CPDF_Reference*)pStreamObj)->GetRefObjNum(); |
+ if (CPDF_Reference* pRef = |
+ ToReference(pKidDict->GetElement(FX_BSTRC("Stm")))) { |
+ pKid->m_StreamContent.m_RefObjNum = pRef->GetRefObjNum(); |
} else { |
pKid->m_StreamContent.m_RefObjNum = 0; |
} |
@@ -288,9 +286,9 @@ void CPDF_StructElementImpl::LoadKid(FX_DWORD PageObjNum, |
return; |
} |
pKid->m_Type = CPDF_StructKid::Object; |
- CPDF_Object* pObj = pKidDict->GetElement(FX_BSTRC("Obj")); |
- if (pObj && pObj->GetType() == PDFOBJ_REFERENCE) { |
- pKid->m_Object.m_RefObjNum = ((CPDF_Reference*)pObj)->GetRefObjNum(); |
+ if (CPDF_Reference* pObj = |
+ ToReference(pKidDict->GetElement(FX_BSTRC("Obj")))) { |
+ pKid->m_Object.m_RefObjNum = pObj->GetRefObjNum(); |
} else { |
pKid->m_Object.m_RefObjNum = 0; |
} |