Simplify code that deals with CPDF_PageObjectHolder::GetDict().
CPDF_PageObjectHolder::GetDict() never returns nullptr, so remove all
the code that assumes it can.
Change-Id: Ia34e79c12052e86175df60cd600e360c9f6155b0
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/59112
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Commit-Queue: Lei Zhang <thestig@chromium.org>
diff --git a/core/fpdfapi/page/cpdf_contentparser.cpp b/core/fpdfapi/page/cpdf_contentparser.cpp
index 70b9bd4..0caafef 100644
--- a/core/fpdfapi/page/cpdf_contentparser.cpp
+++ b/core/fpdfapi/page/cpdf_contentparser.cpp
@@ -25,7 +25,7 @@
CPDF_ContentParser::CPDF_ContentParser(CPDF_Page* pPage)
: m_CurrentStage(Stage::kGetContent), m_pObjectHolder(pPage) {
ASSERT(pPage);
- if (!pPage->GetDocument() || !pPage->GetDict()) {
+ if (!pPage->GetDocument()) {
m_CurrentStage = Stage::kComplete;
return;
}
diff --git a/core/fpdfapi/page/cpdf_pageobjectholder.cpp b/core/fpdfapi/page/cpdf_pageobjectholder.cpp
index c67e408..4f22e88 100644
--- a/core/fpdfapi/page/cpdf_pageobjectholder.cpp
+++ b/core/fpdfapi/page/cpdf_pageobjectholder.cpp
@@ -40,8 +40,7 @@
m_pResources(pResources),
m_pDict(pDict),
m_pDocument(pDoc) {
- // TODO(thestig): Check if |m_pDict| is never a nullptr and simplify
- // callers that checks for that.
+ ASSERT(m_pDict);
}
CPDF_PageObjectHolder::~CPDF_PageObjectHolder() = default;
@@ -89,9 +88,6 @@
}
void CPDF_PageObjectHolder::LoadTransInfo() {
- if (!m_pDict)
- return;
-
CPDF_Dictionary* pGroup = m_pDict->GetDictFor("Group");
if (!pGroup)
return;
diff --git a/core/fpdfapi/page/cpdf_pageobjectholder.h b/core/fpdfapi/page/cpdf_pageobjectholder.h
index 332d912..70a76b8 100644
--- a/core/fpdfapi/page/cpdf_pageobjectholder.h
+++ b/core/fpdfapi/page/cpdf_pageobjectholder.h
@@ -66,8 +66,6 @@
CPDF_Document* GetDocument() const { return m_pDocument.Get(); }
- // TODO(thestig): Can this return nullptr? If not, audit callers and simplify
- // the ones that assume it can.
CPDF_Dictionary* GetDict() const { return m_pDict.Get(); }
size_t GetPageObjectCount() const { return m_PageObjectList.size(); }
CPDF_PageObject* GetPageObjectByIndex(size_t index) const;
diff --git a/core/fpdfapi/render/cpdf_renderstatus.cpp b/core/fpdfapi/render/cpdf_renderstatus.cpp
index b385613..b73fdff 100644
--- a/core/fpdfapi/render/cpdf_renderstatus.cpp
+++ b/core/fpdfapi/render/cpdf_renderstatus.cpp
@@ -1192,11 +1192,8 @@
CFX_Matrix matrix = mtObj2Device * buffer.GetMatrix();
const CPDF_Dictionary* pFormResource = nullptr;
const CPDF_FormObject* pFormObj = pObj->AsForm();
- if (pFormObj) {
- const CPDF_Dictionary* pFormDict = pFormObj->form()->GetDict();
- if (pFormDict)
- pFormResource = pFormDict->GetDictFor("Resources");
- }
+ if (pFormObj)
+ pFormResource = pFormObj->form()->GetDict()->GetDictFor("Resources");
CPDF_RenderStatus status(m_pContext.Get(), buffer.GetDevice());
status.SetOptions(m_Options);
status.SetDeviceMatrix(buffer.GetMatrix());
@@ -1219,9 +1216,8 @@
return true;
}
CFX_Matrix matrix = pFormObj->form_matrix() * mtObj2Device;
- const CPDF_Dictionary* pFormDict = pFormObj->form()->GetDict();
const CPDF_Dictionary* pResources =
- pFormDict ? pFormDict->GetDictFor("Resources") : nullptr;
+ pFormObj->form()->GetDict()->GetDictFor("Resources");
CPDF_RenderStatus status(m_pContext.Get(), m_pDevice);
status.SetOptions(m_Options);
status.SetStopObject(m_pStopObj.Get());
@@ -1453,9 +1449,7 @@
group_alpha = pFormObj->m_GeneralState.GetFillAlpha();
transparency = pFormObj->form()->GetTransparency();
bGroupTransparent = transparency.IsIsolated();
- const CPDF_Dictionary* pFormDict = pFormObj->form()->GetDict();
- if (pFormDict)
- pFormResource = pFormDict->GetDictFor("Resources");
+ pFormResource = pFormObj->form()->GetDict()->GetDictFor("Resources");
}
bool bTextClip =
(pPageObj->m_ClipPath.HasRef() &&
@@ -1475,11 +1469,9 @@
}
const CPDF_Dictionary* pPageResources =
pPage ? pPage->m_pPageResources.Get() : nullptr;
- const CPDF_Object* pCSObj = pPageObj->AsImage()
- ->GetImage()
- ->GetStream()
- ->GetDict()
- ->GetDirectObjectFor("ColorSpace");
+ auto* pImageStream = pPageObj->AsImage()->GetImage()->GetStream();
+ const CPDF_Object* pCSObj =
+ pImageStream->GetDict()->GetDirectObjectFor("ColorSpace");
RetainPtr<CPDF_ColorSpace> pColorSpace =
CPDF_DocPageData::FromDocument(pDocument)->GetColorSpace(
pCSObj, pPageResources);
@@ -1839,10 +1831,9 @@
options.GetOptions().bRectAA = true;
options.GetOptions().bForceDownsample = false;
- const CPDF_Dictionary* pFormResource = nullptr;
- auto* pForm = static_cast<const CPDF_Form*>(pType3Char->form());
- if (pForm->GetDict())
- pFormResource = pForm->GetDict()->GetDictFor("Resources");
+ const auto* pForm = static_cast<const CPDF_Form*>(pType3Char->form());
+ const CPDF_Dictionary* pFormResource =
+ pForm->GetDict()->GetDictFor("Resources");
if (fill_alpha == 255) {
CPDF_RenderStatus status(m_pContext.Get(), m_pDevice);
@@ -2554,9 +2545,8 @@
bitmap->Clear(0);
}
- const CPDF_Dictionary* pFormResource = nullptr;
- if (form.GetDict())
- pFormResource = form.GetDict()->GetDictFor("Resources");
+ const CPDF_Dictionary* pFormResource =
+ form.GetDict()->GetDictFor("Resources");
CPDF_RenderOptions options;
options.SetColorMode(bLuminosity ? CPDF_RenderOptions::kNormal
: CPDF_RenderOptions::kAlpha);
diff --git a/core/fpdfdoc/cpdf_annotlist.cpp b/core/fpdfdoc/cpdf_annotlist.cpp
index 2dc0f58..b1ceb57 100644
--- a/core/fpdfdoc/cpdf_annotlist.cpp
+++ b/core/fpdfdoc/cpdf_annotlist.cpp
@@ -172,9 +172,6 @@
CPDF_AnnotList::CPDF_AnnotList(CPDF_Page* pPage)
: m_pDocument(pPage->GetDocument()) {
- if (!pPage->GetDict())
- return;
-
CPDF_Array* pAnnots = pPage->GetDict()->GetArrayFor("Annots");
if (!pAnnots)
return;
diff --git a/core/fpdfdoc/cpdf_interactiveform.cpp b/core/fpdfdoc/cpdf_interactiveform.cpp
index 937e836..a7a4546 100644
--- a/core/fpdfdoc/cpdf_interactiveform.cpp
+++ b/core/fpdfdoc/cpdf_interactiveform.cpp
@@ -879,11 +879,7 @@
}
void CPDF_InteractiveForm::FixPageFields(CPDF_Page* pPage) {
- CPDF_Dictionary* pPageDict = pPage->GetDict();
- if (!pPageDict)
- return;
-
- CPDF_Array* pAnnots = pPageDict->GetArrayFor("Annots");
+ CPDF_Array* pAnnots = pPage->GetDict()->GetArrayFor("Annots");
if (!pAnnots)
return;
diff --git a/core/fpdfdoc/cpdf_structelement.cpp b/core/fpdfdoc/cpdf_structelement.cpp
index db36232..50fa83d 100644
--- a/core/fpdfdoc/cpdf_structelement.cpp
+++ b/core/fpdfdoc/cpdf_structelement.cpp
@@ -104,7 +104,7 @@
return;
if (pKidObj->IsNumber()) {
- if (m_pTree->GetPage() && m_pTree->GetPage()->GetObjNum() != PageObjNum)
+ if (m_pTree->GetPage()->GetObjNum() != PageObjNum)
return;
pKid->m_Type = CPDF_StructKid::PageContent;
@@ -120,7 +120,7 @@
PageObjNum = pRef->GetRefObjNum();
ByteString type = pKidDict->GetStringFor("Type");
- if ((type == "MCR" || type == "OBJR") && m_pTree->GetPage() &&
+ if ((type == "MCR" || type == "OBJR") &&
m_pTree->GetPage()->GetObjNum() != PageObjNum) {
return;
}
@@ -144,11 +144,5 @@
pKid->m_Type = CPDF_StructKid::Element;
pKid->m_pDict.Reset(pKidDict);
- if (m_pTree->GetPage()) {
- pKid->m_pElement = nullptr;
- return;
- }
-
- pKid->m_pElement =
- pdfium::MakeRetain<CPDF_StructElement>(m_pTree.Get(), this, pKidDict);
+ pKid->m_pElement = nullptr;
}
diff --git a/fpdfsdk/cpdfsdk_pageview.cpp b/fpdfsdk/cpdfsdk_pageview.cpp
index 70bbf32..3e58929 100644
--- a/fpdfsdk/cpdfsdk_pageview.cpp
+++ b/fpdfsdk/cpdfsdk_pageview.cpp
@@ -571,5 +571,5 @@
int CPDFSDK_PageView::GetPageIndexForStaticPDF() const {
const CPDF_Dictionary* pDict = GetPDFPage()->GetDict();
CPDF_Document* pDoc = m_pFormFillEnv->GetPDFDocument();
- return (pDoc && pDict) ? pDoc->GetPageIndex(pDict->GetObjNum()) : -1;
+ return pDoc ? pDoc->GetPageIndex(pDict->GetObjNum()) : -1;
}
diff --git a/fpdfsdk/fpdf_annot.cpp b/fpdfsdk/fpdf_annot.cpp
index 7877695..7053459 100644
--- a/fpdfsdk/fpdf_annot.cpp
+++ b/fpdfsdk/fpdf_annot.cpp
@@ -253,7 +253,7 @@
FPDF_EXPORT int FPDF_CALLCONV FPDFPage_GetAnnotCount(FPDF_PAGE page) {
CPDF_Page* pPage = CPDFPageFromFPDFPage(page);
- if (!pPage || !pPage->GetDict())
+ if (!pPage)
return 0;
CPDF_Array* pAnnots = pPage->GetDict()->GetArrayFor("Annots");
@@ -263,7 +263,7 @@
FPDF_EXPORT FPDF_ANNOTATION FPDF_CALLCONV FPDFPage_GetAnnot(FPDF_PAGE page,
int index) {
CPDF_Page* pPage = CPDFPageFromFPDFPage(page);
- if (!pPage || !pPage->GetDict() || index < 0)
+ if (!pPage || index < 0)
return nullptr;
CPDF_Array* pAnnots = pPage->GetDict()->GetArrayFor("Annots");
@@ -283,7 +283,7 @@
FPDF_EXPORT int FPDF_CALLCONV FPDFPage_GetAnnotIndex(FPDF_PAGE page,
FPDF_ANNOTATION annot) {
CPDF_Page* pPage = CPDFPageFromFPDFPage(page);
- if (!pPage || !pPage->GetDict())
+ if (!pPage)
return -1;
CPDF_Dictionary* pAnnotDict = GetAnnotDictFromFPDFAnnotation(annot);
@@ -313,7 +313,7 @@
FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFPage_RemoveAnnot(FPDF_PAGE page,
int index) {
CPDF_Page* pPage = CPDFPageFromFPDFPage(page);
- if (!pPage || !pPage->GetDict() || index < 0)
+ if (!pPage || index < 0)
return false;
CPDF_Array* pAnnots = pPage->GetDict()->GetArrayFor("Annots");
diff --git a/fpdfsdk/fpdf_doc.cpp b/fpdfsdk/fpdf_doc.cpp
index b9bf93d..5b7c727 100644
--- a/fpdfsdk/fpdf_doc.cpp
+++ b/fpdfsdk/fpdf_doc.cpp
@@ -343,7 +343,7 @@
if (!start_pos || !link_annot)
return false;
CPDF_Page* pPage = CPDFPageFromFPDFPage(page);
- if (!pPage || !pPage->GetDict())
+ if (!pPage)
return false;
CPDF_Array* pAnnots = pPage->GetDict()->GetArrayFor("Annots");
if (!pAnnots)
diff --git a/fpdfsdk/fpdf_editpage.cpp b/fpdfsdk/fpdf_editpage.cpp
index 50799f0..007feff 100644
--- a/fpdfsdk/fpdf_editpage.cpp
+++ b/fpdfsdk/fpdf_editpage.cpp
@@ -61,7 +61,7 @@
return false;
const CPDF_Dictionary* pFormDict = pPage->GetDict();
- if (!pFormDict || !pFormDict->KeyExist("Type"))
+ if (!pFormDict->KeyExist("Type"))
return false;
const CPDF_Object* pObject = pFormDict->GetObjectFor("Type")->GetDirect();
diff --git a/fpdfsdk/fpdf_flatten.cpp b/fpdfsdk/fpdf_flatten.cpp
index fad2be3..424e1b4 100644
--- a/fpdfsdk/fpdf_flatten.cpp
+++ b/fpdfsdk/fpdf_flatten.cpp
@@ -84,7 +84,7 @@
std::vector<CFX_FloatRect>* pRectArray,
std::vector<CPDF_Dictionary*>* pObjectArray,
int nUsage) {
- if (!pSourceDoc || !pPageDic)
+ if (!pSourceDoc)
return FLATTEN_FAIL;
GetContentsRect(pSourceDoc, pPageDic, pRectArray);
@@ -253,7 +253,7 @@
CPDF_Document* pDocument = pPage->GetDocument();
CPDF_Dictionary* pPageDict = pPage->GetDict();
- if (!pDocument || !pPageDict)
+ if (!pDocument)
return FLATTEN_FAIL;
std::vector<CPDF_Dictionary*> ObjectArray;
diff --git a/fpdfsdk/fpdf_thumbnail.cpp b/fpdfsdk/fpdf_thumbnail.cpp
index b3b6ea1..818b5f1 100644
--- a/fpdfsdk/fpdf_thumbnail.cpp
+++ b/fpdfsdk/fpdf_thumbnail.cpp
@@ -23,7 +23,7 @@
return nullptr;
const CPDF_Dictionary* page_dict = p_page->GetDict();
- if (!page_dict || !page_dict->KeyExist("Type"))
+ if (!page_dict->KeyExist("Type"))
return nullptr;
return page_dict->GetStreamFor("Thumb");
diff --git a/fpdfsdk/fpdf_transformpage.cpp b/fpdfsdk/fpdf_transformpage.cpp
index 59c5fb5..788c393 100644
--- a/fpdfsdk/fpdf_transformpage.cpp
+++ b/fpdfsdk/fpdf_transformpage.cpp
@@ -60,9 +60,7 @@
}
CPDF_Object* GetPageContent(CPDF_Dictionary* pPageDict) {
- return pPageDict
- ? pPageDict->GetDirectObjectFor(pdfium::page_object::kContents)
- : nullptr;
+ return pPageDict->GetDirectObjectFor(pdfium::page_object::kContents);
}
} // namespace