Use std::extent to figure out the size of member arrays.
FX_ArraySize() is about to be removed in favor of pdfium::size().
However, pdfium::size() can't figure out the number of elements in a
member variable array in constexpr statements.
Change-Id: Ifea3b4fd8ed0ee9fe0e17872a39eff6e29cc71f2
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/69571
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Commit-Queue: Lei Zhang <thestig@chromium.org>
diff --git a/core/fpdfapi/font/cpdf_type3font.cpp b/core/fpdfapi/font/cpdf_type3font.cpp
index eae08ea..2cbf95c 100644
--- a/core/fpdfapi/font/cpdf_type3font.cpp
+++ b/core/fpdfapi/font/cpdf_type3font.cpp
@@ -7,6 +7,7 @@
#include "core/fpdfapi/font/cpdf_type3font.h"
#include <algorithm>
+#include <type_traits>
#include <utility>
#include "core/fpdfapi/font/cpdf_type3char.h"
@@ -74,7 +75,7 @@
m_FontBBox = box.ToFxRect();
}
- static constexpr size_t kCharLimit = FX_ArraySize(m_CharWidthL);
+ static constexpr size_t kCharLimit = std::extent<decltype(m_CharWidthL)>();
int StartChar = m_pFontDict->GetIntegerFor("FirstChar");
if (StartChar >= 0 && static_cast<size_t>(StartChar) < kCharLimit) {
const CPDF_Array* pWidthArray = m_pFontDict->GetArrayFor("Widths");
diff --git a/core/fpdfapi/page/cpdf_colorspace.cpp b/core/fpdfapi/page/cpdf_colorspace.cpp
index ba22433..6b309cb 100644
--- a/core/fpdfapi/page/cpdf_colorspace.cpp
+++ b/core/fpdfapi/page/cpdf_colorspace.cpp
@@ -9,6 +9,7 @@
#include <algorithm>
#include <limits>
#include <memory>
+#include <type_traits>
#include <utility>
#include <vector>
@@ -842,8 +843,9 @@
const CPDF_Array* pParam = pDict->GetArrayFor("Range");
static constexpr float kDefaultRanges[kRangesCount] = {-100.0f, 100.0f,
-100.0f, 100.0f};
- static_assert(FX_ArraySize(kDefaultRanges) == FX_ArraySize(m_Ranges),
- "Range size mismatch");
+ static_assert(
+ FX_ArraySize(kDefaultRanges) == std::extent<decltype(m_Ranges)>(),
+ "Range size mismatch");
for (size_t i = 0; i < FX_ArraySize(kDefaultRanges); ++i)
m_Ranges[i] = pParam ? pParam->GetNumberAt(i) : kDefaultRanges[i];
return 3;