Enforce -Wshorten-64-to-32 on core/fpdfapi/render
- Widen one variable to size_t as needed.
- Shorten one variable to uint32_t to be compatible with subsequent
calculations, but provide checked cast.
Change-Id: I594270c40f65317adf320d5f2a859cfa1023283c
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/90171
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: Tom Sepez <tsepez@chromium.org>
diff --git a/core/fpdfapi/render/BUILD.gn b/core/fpdfapi/render/BUILD.gn
index 33b800b..ab33f91 100644
--- a/core/fpdfapi/render/BUILD.gn
+++ b/core/fpdfapi/render/BUILD.gn
@@ -44,6 +44,7 @@
"cpdf_type3glyphmap.cpp",
"cpdf_type3glyphmap.h",
]
+ cflags = []
configs += [ "../../../:pdfium_strict_config" ]
deps = [
"../../../constants",
@@ -54,13 +55,16 @@
"../page",
"../parser",
]
+ visibility = [ "../../../*" ]
+ if (is_clang) {
+ cflags += [ "-Wshorten-64-to-32" ]
+ }
if (is_win) {
sources += [
"cpdf_windowsrenderdevice.cpp",
"cpdf_windowsrenderdevice.h",
]
}
- visibility = [ "../../../*" ]
}
pdfium_unittest_source_set("unittests") {
diff --git a/core/fpdfapi/render/cpdf_pagerendercache.cpp b/core/fpdfapi/render/cpdf_pagerendercache.cpp
index dc5ebe7..5cce8e0 100644
--- a/core/fpdfapi/render/cpdf_pagerendercache.cpp
+++ b/core/fpdfapi/render/cpdf_pagerendercache.cpp
@@ -13,6 +13,7 @@
#include "core/fpdfapi/page/cpdf_page.h"
#include "core/fpdfapi/render/cpdf_imagecacheentry.h"
#include "core/fpdfapi/render/cpdf_renderstatus.h"
+#include "core/fxcrt/stl_util.h"
#include "core/fxge/dib/cfx_dibitmap.h"
namespace {
@@ -36,7 +37,7 @@
if (m_nCacheSize <= (uint32_t)dwLimitCacheSize)
return;
- size_t nCount = m_ImageCache.size();
+ uint32_t nCount = fxcrt::CollectionSize<uint32_t>(m_ImageCache);
std::vector<CacheInfo> cache_info;
cache_info.reserve(nCount);
for (const auto& it : m_ImageCache) {
@@ -49,7 +50,7 @@
// The comparison is legal because uint32_t is an unsigned type.
uint32_t nTimeCount = m_nTimeCount;
if (nTimeCount + 1 < nTimeCount) {
- for (size_t i = 0; i < nCount; i++)
+ for (uint32_t i = 0; i < nCount; i++)
m_ImageCache[cache_info[i].pStream]->SetTimeCount(i);
m_nTimeCount = nCount;
}
diff --git a/core/fpdfapi/render/cpdf_textrenderer.cpp b/core/fpdfapi/render/cpdf_textrenderer.cpp
index bd48888..22dc40b 100644
--- a/core/fpdfapi/render/cpdf_textrenderer.cpp
+++ b/core/fpdfapi/render/cpdf_textrenderer.cpp
@@ -106,8 +106,8 @@
if (pFont->IsType3Font())
return;
- int nChars = pFont->CountChar(str.AsStringView());
- if (nChars <= 0)
+ size_t nChars = pFont->CountChar(str.AsStringView());
+ if (nChars == 0)
return;
size_t offset = 0;
@@ -116,7 +116,7 @@
codes.resize(nChars);
positions.resize(nChars - 1);
float cur_pos = 0;
- for (int i = 0; i < nChars; i++) {
+ for (size_t i = 0; i < nChars; i++) {
codes[i] = pFont->GetNextChar(str.AsStringView(), &offset);
if (i)
positions[i - 1] = cur_pos;