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;