Check CPDFFooObjectFromFPDFPageObject() result.

Instead of checking the FPDF_OBJECT itself. Remove redundant checks and
fix nits.

Change-Id: Id566847d39d16331c08f0b5f3b46431716717b5c
Reviewed-on: https://pdfium-review.googlesource.com/c/44535
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Commit-Queue: Lei Zhang <thestig@chromium.org>
diff --git a/fpdfsdk/fpdf_editpage.cpp b/fpdfsdk/fpdf_editpage.cpp
index 585e7e1..d0ff962 100644
--- a/fpdfsdk/fpdf_editpage.cpp
+++ b/fpdfsdk/fpdf_editpage.cpp
@@ -137,13 +137,14 @@
   return static_cast<unsigned int>(alpha * 255.f + 0.5f);
 }
 
+CPDF_FormObject* CPDFFormObjectFromFPDFPageObject(FPDF_PAGEOBJECT page_object) {
+  auto* pPageObj = CPDFPageObjectFromFPDFPageObject(page_object);
+  return pPageObj ? pPageObj->AsForm() : nullptr;
+}
+
 const CPDF_PageObjectList* CPDFPageObjListFromFPDFFormObject(
     FPDF_PAGEOBJECT page_object) {
-  auto* pPageObj = CPDFPageObjectFromFPDFPageObject(page_object);
-  if (!pPageObj)
-    return nullptr;
-
-  CPDF_FormObject* pFormObject = pPageObj->AsForm();
+  CPDF_FormObject* pFormObject = CPDFFormObjectFromFPDFPageObject(page_object);
   if (!pFormObject)
     return nullptr;
 
@@ -250,8 +251,8 @@
   CPDF_Page* pPage = CPDFPageFromFPDFPage(page);
   if (!IsPageObject(pPage))
     return;
-  pPageObj->SetDirty(true);
 
+  pPageObj->SetDirty(true);
   pPage->AppendPageObject(std::move(pPageObjHolder));
   CalcBoundingBox(pPageObj);
 }
@@ -297,24 +298,24 @@
 
 FPDF_EXPORT int FPDF_CALLCONV
 FPDFPageObj_CountMarks(FPDF_PAGEOBJECT page_object) {
-  if (!page_object)
+  CPDF_PageObject* pPageObj = CPDFPageObjectFromFPDFPageObject(page_object);
+  if (!pPageObj)
     return -1;
 
-  const auto& mark =
-      CPDFPageObjectFromFPDFPageObject(page_object)->m_ContentMarks;
-  return mark.CountItems();
+  return pPageObj->m_ContentMarks.CountItems();
 }
 
 FPDF_EXPORT FPDF_PAGEOBJECTMARK FPDF_CALLCONV
 FPDFPageObj_GetMark(FPDF_PAGEOBJECT page_object, unsigned long index) {
-  if (!page_object)
+  CPDF_PageObject* pPageObj = CPDFPageObjectFromFPDFPageObject(page_object);
+  if (!pPageObj)
     return nullptr;
 
-  auto* mark = &CPDFPageObjectFromFPDFPageObject(page_object)->m_ContentMarks;
-  if (index >= mark->CountItems())
+  auto& mark = pPageObj->m_ContentMarks;
+  if (index >= mark.CountItems())
     return nullptr;
 
-  return FPDFPageObjectMarkFromCPDFContentMarkItem(mark->GetItem(index));
+  return FPDFPageObjectMarkFromCPDFContentMarkItem(mark.GetItem(index));
 }
 
 FPDF_EXPORT FPDF_PAGEOBJECTMARK FPDF_CALLCONV
@@ -323,13 +324,11 @@
   if (!pPageObj)
     return nullptr;
 
-  auto* mark = &pPageObj->m_ContentMarks;
-  mark->AddMark(name);
-  unsigned long index = mark->CountItems() - 1;
-
+  auto& mark = pPageObj->m_ContentMarks;
+  mark.AddMark(name);
+  unsigned long index = mark.CountItems() - 1;
   pPageObj->SetDirty(true);
-
-  return FPDFPageObjectMarkFromCPDFContentMarkItem(mark->GetItem(index));
+  return FPDFPageObjectMarkFromCPDFContentMarkItem(mark.GetItem(index));
 }
 
 FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV
@@ -483,10 +482,10 @@
 
 FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV
 FPDFPageObj_HasTransparency(FPDF_PAGEOBJECT pageObject) {
-  if (!pageObject)
+  CPDF_PageObject* pPageObj = CPDFPageObjectFromFPDFPageObject(pageObject);
+  if (!pPageObj)
     return false;
 
-  CPDF_PageObject* pPageObj = CPDFPageObjectFromFPDFPageObject(pageObject);
   int blend_type = pPageObj->m_GeneralState.GetBlendType();
   if (blend_type != FXDIB_BLEND_NORMAL)
     return true;
@@ -598,11 +597,8 @@
 }
 
 FPDF_EXPORT int FPDF_CALLCONV FPDFPageObj_GetType(FPDF_PAGEOBJECT pageObject) {
-  if (!pageObject)
-    return FPDF_PAGEOBJ_UNKNOWN;
-
   CPDF_PageObject* pPageObj = CPDFPageObjectFromFPDFPageObject(pageObject);
-  return pPageObj->GetType();
+  return pPageObj ? pPageObj->GetType() : FPDF_PAGEOBJ_UNKNOWN;
 }
 
 FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFPage_GenerateContent(FPDF_PAGE page) {
@@ -692,11 +688,11 @@
                                    unsigned int G,
                                    unsigned int B,
                                    unsigned int A) {
-  if (!page_object || R > 255 || G > 255 || B > 255 || A > 255)
+  CPDF_PageObject* pPageObj = CPDFPageObjectFromFPDFPageObject(page_object);
+  if (!pPageObj || R > 255 || G > 255 || B > 255 || A > 255)
     return false;
 
   std::vector<float> rgb = {R / 255.f, G / 255.f, B / 255.f};
-  auto* pPageObj = CPDFPageObjectFromFPDFPageObject(page_object);
   pPageObj->m_GeneralState.SetFillAlpha(A / 255.f);
   pPageObj->m_ColorState.SetFillColor(
       CPDF_ColorSpace::GetStockCS(PDFCS_DEVICERGB), rgb);
@@ -728,10 +724,10 @@
                       float* bottom,
                       float* right,
                       float* top) {
-  if (!pageObject)
+  CPDF_PageObject* pPageObj = CPDFPageObjectFromFPDFPageObject(pageObject);
+  if (!pPageObj)
     return false;
 
-  CPDF_PageObject* pPageObj = CPDFPageObjectFromFPDFPageObject(pageObject);
   const CFX_FloatRect& bbox = pPageObj->GetRect();
   *left = bbox.left;
   *bottom = bbox.bottom;
@@ -799,34 +795,38 @@
 
 FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV
 FPDFPageObj_SetLineJoin(FPDF_PAGEOBJECT page_object, int line_join) {
-  if (!page_object)
-    return false;
-  if (line_join <
-          static_cast<int>(CFX_GraphStateData::LineJoin::LineJoinMiter) ||
-      line_join >
-          static_cast<int>(CFX_GraphStateData::LineJoin::LineJoinBevel)) {
-    return false;
-  }
   auto* pPageObj = CPDFPageObjectFromFPDFPageObject(page_object);
-  CFX_GraphStateData::LineJoin lineJoin =
-      static_cast<CFX_GraphStateData::LineJoin>(line_join);
-  pPageObj->m_GraphState.SetLineJoin(lineJoin);
+  if (!pPageObj)
+    return false;
+
+  constexpr int kLineJoinMiter =
+      static_cast<int>(CFX_GraphStateData::LineJoin::LineJoinMiter);
+  constexpr int kLineJoinBevel =
+      static_cast<int>(CFX_GraphStateData::LineJoin::LineJoinBevel);
+  if (line_join < kLineJoinMiter || line_join > kLineJoinBevel)
+    return false;
+
+  pPageObj->m_GraphState.SetLineJoin(
+      static_cast<CFX_GraphStateData::LineJoin>(line_join));
   pPageObj->SetDirty(true);
   return true;
 }
 
 FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV
 FPDFPageObj_SetLineCap(FPDF_PAGEOBJECT page_object, int line_cap) {
-  if (!page_object)
-    return false;
-  if (line_cap < static_cast<int>(CFX_GraphStateData::LineCap::LineCapButt) ||
-      line_cap > static_cast<int>(CFX_GraphStateData::LineCap::LineCapSquare)) {
-    return false;
-  }
   auto* pPageObj = CPDFPageObjectFromFPDFPageObject(page_object);
-  CFX_GraphStateData::LineCap lineCap =
-      static_cast<CFX_GraphStateData::LineCap>(line_cap);
-  pPageObj->m_GraphState.SetLineCap(lineCap);
+  if (!pPageObj)
+    return false;
+
+  constexpr int kLineCapButt =
+      static_cast<int>(CFX_GraphStateData::LineCap::LineCapButt);
+  constexpr int kLineCapSquare =
+      static_cast<int>(CFX_GraphStateData::LineCap::LineCapSquare);
+  if (line_cap < kLineCapButt || line_cap > kLineCapSquare)
+    return false;
+
+  pPageObj->m_GraphState.SetLineCap(
+      static_cast<CFX_GraphStateData::LineCap>(line_cap));
   pPageObj->SetDirty(true);
   return true;
 }
@@ -835,10 +835,7 @@
 FPDFFormObj_CountObjects(FPDF_PAGEOBJECT page_object) {
   const CPDF_PageObjectList* pObjectList =
       CPDFPageObjListFromFPDFFormObject(page_object);
-  if (!pObjectList)
-    return -1;
-
-  return pObjectList->size();
+  return pObjectList ? pObjectList->size() : -1;
 }
 
 FPDF_EXPORT FPDF_PAGEOBJECT FPDF_CALLCONV
@@ -860,12 +857,8 @@
                       double* d,
                       double* e,
                       double* f) {
-  if (!form_object || !a || !b || !c || !d || !e || !f)
-    return false;
-
-  auto* pPageObj = CPDFPageObjectFromFPDFPageObject(form_object);
-  CPDF_FormObject* pFormObj = pPageObj->AsForm();
-  if (!pFormObj)
+  CPDF_FormObject* pFormObj = CPDFFormObjectFromFPDFPageObject(form_object);
+  if (!pFormObj || !a || !b || !c || !d || !e || !f)
     return false;
 
   const CFX_Matrix& matrix = pFormObj->form_matrix();
@@ -875,6 +868,5 @@
   *d = matrix.d;
   *e = matrix.e;
   *f = matrix.f;
-
   return true;
 }