From ac8357b3ec7e1fe4000ebcae5ce65a38bfeb5cb1 Mon Sep 17 00:00:00 2001 From: Nicolas Pena Date: Mon, 28 May 2018 20:06:19 +0000 Subject: Revert 'Remove almost all usages of CFX_FixedBufGrow with std::vector' MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This is a manual revert of the CL at: https://pdfium-review.googlesource.com/c/pdfium/+/32159 The only file manually changed was cpdf_renderstatus.cpp Reason for revert: the bug below shows that sometimes the vector size used is larger than the parameter given to CFX_FixedBufGrow. Thus, we will revert, then add vectors using std::max unless it's clear from the code that the code will never access indices outside. Bug: chromium:847247 Change-Id: Iee54af023c8564824418a7d34a6385b0bc418ff0 Reviewed-on: https://pdfium-review.googlesource.com/33050 Reviewed-by: dsinclair Commit-Queue: Nicolás Peña Moreno --- core/fxcodec/codec/fx_codec_icc.cpp | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) (limited to 'core/fxcodec') diff --git a/core/fxcodec/codec/fx_codec_icc.cpp b/core/fxcodec/codec/fx_codec_icc.cpp index 458816e77e..29b37d19ac 100644 --- a/core/fxcodec/codec/fx_codec_icc.cpp +++ b/core/fxcodec/codec/fx_codec_icc.cpp @@ -5,10 +5,10 @@ // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com #include -#include #include "core/fxcodec/codec/ccodec_iccmodule.h" #include "core/fxcodec/codec/codec_int.h" +#include "core/fxcrt/cfx_fixedbufgrow.h" namespace { @@ -124,16 +124,19 @@ void CCodec_IccModule::Translate(CLcmsCmm* pTransform, uint32_t nSrcComponents = m_nComponents; uint8_t output[4]; if (pTransform->m_bLab) { - std::vector input(pSrcValues, pSrcValues + nSrcComponents); - cmsDoTransform(pTransform->m_hTransform, input.data(), output, 1); + CFX_FixedBufGrow inputs(nSrcComponents); + double* input = inputs; + for (uint32_t i = 0; i < nSrcComponents; ++i) + input[i] = pSrcValues[i]; + cmsDoTransform(pTransform->m_hTransform, input, output, 1); } else { - std::vector input; - input.reserve(nSrcComponents); + CFX_FixedBufGrow inputs(nSrcComponents); + uint8_t* input = inputs; for (uint32_t i = 0; i < nSrcComponents; ++i) { - input.push_back( - pdfium::clamp(static_cast(pSrcValues[i] * 255.0f), 0, 255)); + input[i] = + pdfium::clamp(static_cast(pSrcValues[i] * 255.0f), 0, 255); } - cmsDoTransform(pTransform->m_hTransform, input.data(), output, 1); + cmsDoTransform(pTransform->m_hTransform, input, output, 1); } pDestValues[0] = output[2] / 255.0f; pDestValues[1] = output[1] / 255.0f; -- cgit v1.2.3