diff --git a/core/fpdfapi/fpdf_edit/fpdf_edit_create.cpp b/core/fpdfapi/fpdf_edit/fpdf_edit_create.cpp
index 658b978..994c1c8 100644
--- a/core/fpdfapi/fpdf_edit/fpdf_edit_create.cpp
+++ b/core/fpdfapi/fpdf_edit/fpdf_edit_create.cpp
@@ -1353,28 +1353,26 @@
     dwStart = j;
   }
 }
+
 void CPDF_Creator::InitNewObjNumOffsets() {
   FX_BOOL bIncremental = (m_dwFlags & FPDFCREATE_INCREMENTAL) != 0;
   FX_BOOL bNoOriginal = (m_dwFlags & FPDFCREATE_NO_ORIGINAL) != 0;
   for (const auto& pair : m_pDocument->m_IndirectObjs) {
     const uint32_t objnum = pair.first;
     const CPDF_Object* pObj = pair.second;
-    if (pObj->GetObjNum() == CPDF_Object::kInvalidObjNum)
+    if (bIncremental || pObj->GetObjNum() == CPDF_Object::kInvalidObjNum)
       continue;
-    if (bIncremental) {
-      if (!pObj->IsModified())
-        continue;
-    } else if (m_pParser && m_pParser->IsValidObjectNumber(objnum) &&
-               m_pParser->GetObjectType(objnum)) {
+    if (m_pParser && m_pParser->IsValidObjectNumber(objnum) &&
+        m_pParser->GetObjectType(objnum)) {
       continue;
     }
     AppendNewObjNum(objnum);
   }
 
   int32_t iCount = m_NewObjNumArray.GetSize();
-  if (iCount == 0) {
+  if (iCount == 0)
     return;
-  }
+
   int32_t i = 0;
   uint32_t dwStartObjNum = 0;
   FX_BOOL bCrossRefValid = m_pParser && m_pParser->GetLastXRefOffset() > 0;
@@ -1386,12 +1384,12 @@
     }
     i++;
   }
-  if (i >= iCount) {
+  if (i >= iCount)
     return;
-  }
+
   uint32_t dwLastObjNum = dwStartObjNum;
   i++;
-  FX_BOOL bNewStart = FALSE;
+  bool bNewStart = false;
   for (; i < iCount; i++) {
     uint32_t dwCurObjNum = m_NewObjNumArray.ElementAt(i);
     bool bExist = m_pParser && m_pParser->IsValidObjectNumber(dwCurObjNum) &&
@@ -1401,14 +1399,15 @@
         m_ObjectOffset.Add(dwStartObjNum, dwLastObjNum - dwStartObjNum + 1);
       dwStartObjNum = dwCurObjNum;
     }
-    if (bNewStart) {
+    if (bNewStart)
       dwStartObjNum = dwCurObjNum;
-    }
+
     bNewStart = bExist;
     dwLastObjNum = dwCurObjNum;
   }
   m_ObjectOffset.Add(dwStartObjNum, dwLastObjNum - dwStartObjNum + 1);
 }
+
 void CPDF_Creator::AppendNewObjNum(uint32_t objbum) {
   int32_t iStart = 0, iFind = 0;
   int32_t iEnd = m_NewObjNumArray.GetUpperBound();
diff --git a/core/fpdfapi/fpdf_parser/include/cpdf_object.h b/core/fpdfapi/fpdf_parser/include/cpdf_object.h
index 0d2e87e..f637e36 100644
--- a/core/fpdfapi/fpdf_parser/include/cpdf_object.h
+++ b/core/fpdfapi/fpdf_parser/include/cpdf_object.h
@@ -42,7 +42,6 @@
   virtual CPDF_Object* Clone(FX_BOOL bDirect = FALSE) const = 0;
   virtual CPDF_Object* GetDirect() const;
 
-  FX_BOOL IsModified() const { return FALSE; }
   void Release();
 
   virtual CFX_ByteString GetString() const;
