Convert some CPDF_ExpIntFunc getters to return spans. Use spans to help enforce bound checking for GetBeginValues() and GetEndValues(). Also mark these methods as Skia-only. Change-Id: I7589cee0db26c7073f72e1d733eb29ae7d9fd837 Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/97930 Reviewed-by: Nigi <nigi@chromium.org> Commit-Queue: Lei Zhang <thestig@chromium.org>
diff --git a/core/fpdfapi/page/cpdf_expintfunc.h b/core/fpdfapi/page/cpdf_expintfunc.h index c31ad8b..d829456 100644 --- a/core/fpdfapi/page/cpdf_expintfunc.h +++ b/core/fpdfapi/page/cpdf_expintfunc.h
@@ -12,6 +12,10 @@ #include "core/fpdfapi/page/cpdf_function.h" +#if defined(_SKIA_SUPPORT_) || defined(_SKIA_SUPPORT_PATHS_) +#include "third_party/base/span.h" +#endif + class CPDF_ExpIntFunc final : public CPDF_Function { public: CPDF_ExpIntFunc(); @@ -25,8 +29,11 @@ uint32_t GetOrigOutputs() const { return m_nOrigOutputs; } float GetExponent() const { return m_Exponent; } - const std::vector<float>& GetBeginValues() const { return m_BeginValues; } - const std::vector<float>& GetEndValues() const { return m_EndValues; } + +#if defined(_SKIA_SUPPORT_) || defined(_SKIA_SUPPORT_PATHS_) + pdfium::span<const float> GetBeginValues() const { return m_BeginValues; } + pdfium::span<const float> GetEndValues() const { return m_EndValues; } +#endif private: uint32_t m_nOrigOutputs = 0;
diff --git a/core/fxge/skia/fx_skia_device.cpp b/core/fxge/skia/fx_skia_device.cpp index 80f3266..d153bc4 100644 --- a/core/fxge/skia/fx_skia_device.cpp +++ b/core/fxge/skia/fx_skia_device.cpp
@@ -419,8 +419,8 @@ if (pFunc->GetOrigOutputs() != 3) return false; - auto begin_values = pFunc->GetBeginValues().begin(); - auto end_values = pFunc->GetEndValues().begin(); + auto begin_values = pFunc->GetBeginValues(); + auto end_values = pFunc->GetEndValues(); if (is_encode_reversed) std::swap(begin_values, end_values);