diff --git a/core/fpdfapi/page/cpdf_contentmark.cpp b/core/fpdfapi/page/cpdf_contentmark.cpp
index 615d31f..13945d9 100644
--- a/core/fpdfapi/page/cpdf_contentmark.cpp
+++ b/core/fpdfapi/page/cpdf_contentmark.cpp
@@ -18,23 +18,16 @@
 std::unique_ptr<CPDF_ContentMark> CPDF_ContentMark::Clone() {
   auto result = pdfium::MakeUnique<CPDF_ContentMark>();
   if (m_pMarkData)
-    result->m_pMarkData.Reset(new MarkData(*m_pMarkData));
-
+    result->m_pMarkData = pdfium::MakeRetain<MarkData>(*m_pMarkData);
   return result;
 }
 
 size_t CPDF_ContentMark::CountItems() const {
-  if (!m_pMarkData)
-    return 0;
-
-  return m_pMarkData->CountItems();
+  return m_pMarkData ? m_pMarkData->CountItems() : 0;
 }
 
 bool CPDF_ContentMark::ContainsItem(const CPDF_ContentMarkItem* pItem) const {
-  if (!m_pMarkData)
-    return false;
-
-  return m_pMarkData->ContainsItem(pItem);
+  return m_pMarkData && m_pMarkData->ContainsItem(pItem);
 }
 
 CPDF_ContentMarkItem* CPDF_ContentMark::GetItem(size_t i) {
@@ -48,10 +41,7 @@
 }
 
 int CPDF_ContentMark::GetMarkedContentID() const {
-  if (!m_pMarkData)
-    return -1;
-
-  return m_pMarkData->GetMarkedContentID();
+  return m_pMarkData ? m_pMarkData->GetMarkedContentID() : -1;
 }
 
 void CPDF_ContentMark::AddMark(ByteString name) {
diff --git a/fpdfsdk/fpdf_editpage.cpp b/fpdfsdk/fpdf_editpage.cpp
index 5a7312d..ded55b9 100644
--- a/fpdfsdk/fpdf_editpage.cpp
+++ b/fpdfsdk/fpdf_editpage.cpp
@@ -100,13 +100,9 @@
 }
 
 CPDF_Dictionary* GetMarkParamDict(FPDF_PAGEOBJECTMARK mark) {
-  if (!mark)
-    return nullptr;
-
   CPDF_ContentMarkItem* pMarkItem =
       CPDFContentMarkItemFromFPDFPageObjectMark(mark);
-
-  return pMarkItem->GetParam();
+  return pMarkItem ? pMarkItem->GetParam() : nullptr;
 }
 
 CPDF_Dictionary* GetOrCreateMarkParamsDict(FPDF_DOCUMENT document,
@@ -365,10 +361,7 @@
       CPDFContentMarkItemFromFPDFPageObjectMark(mark);
 
   const CPDF_Dictionary* pParams = pMarkItem->GetParam();
-  if (!pParams)
-    return 0;
-
-  return pParams->GetCount();
+  return pParams ? pParams->GetCount() : 0;
 }
 
 FPDF_EXPORT unsigned long FPDF_CALLCONV
@@ -399,10 +392,7 @@
     return FPDF_OBJECT_UNKNOWN;
 
   const CPDF_Object* pObject = pParams->GetObjectFor(key);
-  if (!pObject)
-    return FPDF_OBJECT_UNKNOWN;
-
-  return pObject->GetType();
+  return pObject ? pObject->GetType() : FPDF_OBJECT_UNKNOWN;
 }
 
 FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV
