Apply pdfium_noshorten_config to fpdfapi/edit

Unfortunately, hard to avoid checked casts when moving between
indices and stream object numbers.

Change-Id: If506e024d8a75b398eca3a822f762d1ae835a224
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/91370
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: Tom Sepez <tsepez@chromium.org>
diff --git a/core/fpdfapi/edit/BUILD.gn b/core/fpdfapi/edit/BUILD.gn
index f0d42c8..72f17cb 100644
--- a/core/fpdfapi/edit/BUILD.gn
+++ b/core/fpdfapi/edit/BUILD.gn
@@ -18,7 +18,10 @@
     "cpdf_stringarchivestream.cpp",
     "cpdf_stringarchivestream.h",
   ]
-  configs += [ "../../../:pdfium_strict_config" ]
+  configs += [
+    "../../../:pdfium_strict_config",
+    "../../../:pdfium_noshorten_config",
+  ]
   deps = [
     "../../../constants",
     "../../../third_party:skia_shared",
diff --git a/core/fpdfapi/edit/cpdf_creator.cpp b/core/fpdfapi/edit/cpdf_creator.cpp
index af0ecb3..9d60e85 100644
--- a/core/fpdfapi/edit/cpdf_creator.cpp
+++ b/core/fpdfapi/edit/cpdf_creator.cpp
@@ -247,10 +247,10 @@
       FX_FILESIZE src_size = m_SavedOffset;
       m_pParser->GetSyntax()->SetPos(0);
       while (src_size) {
-        const FX_FILESIZE block_size = std::min(kBufferSize, src_size);
-        if (!m_pParser->GetSyntax()->ReadBlock(buffer.data(), block_size)) {
+        const uint32_t block_size =
+            static_cast<uint32_t>(std::min(kBufferSize, src_size));
+        if (!m_pParser->GetSyntax()->ReadBlock(buffer.data(), block_size))
           return Stage::kInvalid;
-        }
         if (!m_Archive->WriteBlock(buffer.data(), block_size))
           return Stage::kInvalid;
 
@@ -516,8 +516,8 @@
           return Stage::kInvalid;
       }
     } else {
-      size_t count = m_NewObjNumArray.size();
-      size_t i = 0;
+      int count = fxcrt::CollectionSize<int>(m_NewObjNumArray);
+      int i = 0;
       for (i = 0; i < count; i++) {
         if (!m_Archive->WriteDWord(m_NewObjNumArray[i]) ||
             !m_Archive->WriteString(" 1 ")) {
diff --git a/core/fpdfapi/edit/cpdf_pagecontentgenerator.cpp b/core/fpdfapi/edit/cpdf_pagecontentgenerator.cpp
index 3f205f8..6f694bf 100644
--- a/core/fpdfapi/edit/cpdf_pagecontentgenerator.cpp
+++ b/core/fpdfapi/edit/cpdf_pagecontentgenerator.cpp
@@ -40,6 +40,7 @@
 #include "third_party/base/check.h"
 #include "third_party/base/containers/contains.h"
 #include "third_party/base/notreached.h"
+#include "third_party/base/numerics/safe_conversions.h"
 #include "third_party/base/span.h"
 
 namespace {
@@ -154,7 +155,8 @@
     fxcrt::ostringstream* buf = &pair.second;
 
     if (stream_index == CPDF_PageObject::kNoContentStream) {
-      int new_stream_index = page_content_manager.AddStream(buf);
+      int new_stream_index =
+          pdfium::base::checked_cast<int>(page_content_manager.AddStream(buf));
       UpdateStreamlessPageObjects(new_stream_index);
       continue;
     }
diff --git a/core/fpdfapi/edit/cpdf_pagecontentmanager.cpp b/core/fpdfapi/edit/cpdf_pagecontentmanager.cpp
index 9cb9f31..3a2d1f5 100644
--- a/core/fpdfapi/edit/cpdf_pagecontentmanager.cpp
+++ b/core/fpdfapi/edit/cpdf_pagecontentmanager.cpp
@@ -17,6 +17,7 @@
 #include "core/fpdfapi/parser/cpdf_stream.h"
 #include "third_party/base/check.h"
 #include "third_party/base/containers/adapters.h"
+#include "third_party/base/numerics/safe_conversions.h"
 
 CPDF_PageContentManager::CPDF_PageContentManager(
     const CPDF_PageObjectHolder* obj_holder)
@@ -132,14 +133,15 @@
 
     // Create a mapping from the old to the new stream indexes, shifted due to
     // the deletion of the |streams_to_remove_|.
-    std::map<int32_t, size_t> stream_index_mapping;
+    std::map<size_t, size_t> stream_index_mapping;
     for (size_t i = 0; i < streams_left.size(); ++i)
       stream_index_mapping[streams_left[i]] = i;
 
     // Update the page objects' content stream indexes.
     for (const auto& obj : *obj_holder_) {
       int32_t old_stream_index = obj->GetContentStream();
-      size_t new_stream_index = stream_index_mapping[old_stream_index];
+      int32_t new_stream_index = pdfium::base::checked_cast<int32_t>(
+          stream_index_mapping[old_stream_index]);
       obj->SetContentStream(new_stream_index);
     }