Index: core/src/fpdfapi/fpdf_parser/fpdf_parser_decode.cpp |
diff --git a/core/src/fpdfapi/fpdf_parser/fpdf_parser_decode.cpp b/core/src/fpdfapi/fpdf_parser/fpdf_parser_decode.cpp |
index d3ef4d738a606a3bf443ed35c2a5e8b27686cf25..7c1c6b1f531ce73d3c193a600d6f7d72f6de559e 100644 |
--- a/core/src/fpdfapi/fpdf_parser/fpdf_parser_decode.cpp |
+++ b/core/src/fpdfapi/fpdf_parser/fpdf_parser_decode.cpp |
@@ -10,6 +10,7 @@ |
#include "core/include/fpdfapi/fpdf_parser.h" |
#include "core/include/fxcodec/fx_codec.h" |
#include "core/include/fxcrt/fx_ext.h" |
+#include "third_party/base/stl_util.h" |
#define _STREAM_MAX_SIZE_ 20 * 1024 * 1024 |
@@ -339,7 +340,7 @@ FX_BOOL PDF_DataDecode(const uint8_t* src_buf, |
CPDF_Object* pParams = |
pDict ? pDict->GetElementValue("DecodeParms") : nullptr; |
- CFX_ByteStringArray DecoderList; |
+ std::vector<CFX_ByteString> DecoderList; |
CFX_ArrayTemplate<CPDF_Object*> ParamList; |
if (CPDF_Array* pDecoders = pDecoder->AsArray()) { |
CPDF_Array* pParamsArray = ToArray(pParams); |
@@ -347,19 +348,18 @@ FX_BOOL PDF_DataDecode(const uint8_t* src_buf, |
pParams = nullptr; |
for (FX_DWORD i = 0; i < pDecoders->GetCount(); i++) { |
- CFX_ByteStringC str = pDecoders->GetConstStringAt(i); |
- DecoderList.Add(str); |
+ DecoderList.push_back(pDecoders->GetConstStringAt(i)); |
ParamList.Add(pParams ? pParamsArray->GetDictAt(i) : nullptr); |
} |
} else { |
- DecoderList.Add(pDecoder->GetConstString()); |
+ DecoderList.push_back(pDecoder->GetConstString()); |
ParamList.Add(pParams ? pParams->GetDict() : nullptr); |
} |
uint8_t* last_buf = (uint8_t*)src_buf; |
FX_DWORD last_size = src_size; |
- for (int i = 0; i < DecoderList.GetSize(); i++) { |
- int estimated_size = |
- i == DecoderList.GetSize() - 1 ? last_estimated_size : 0; |
+ int nSize = pdfium::CollectionSize<int>(DecoderList); |
+ for (int i = 0; i < nSize; i++) { |
+ int estimated_size = i == nSize - 1 ? last_estimated_size : 0; |
CFX_ByteString decoder = DecoderList[i]; |
// Use ToDictionary here because we can push nullptr into the ParamList. |
CPDF_Dictionary* pParam = ToDictionary(ParamList[i]); |
@@ -367,7 +367,7 @@ FX_BOOL PDF_DataDecode(const uint8_t* src_buf, |
FX_DWORD new_size = (FX_DWORD)-1; |
int offset = -1; |
if (decoder == "FlateDecode" || decoder == "Fl") { |
- if (bImageAcc && i == DecoderList.GetSize() - 1) { |
+ if (bImageAcc && i == nSize - 1) { |
ImageEncoding = "FlateDecode"; |
dest_buf = (uint8_t*)last_buf; |
dest_size = last_size; |
@@ -384,7 +384,7 @@ FX_BOOL PDF_DataDecode(const uint8_t* src_buf, |
} else if (decoder == "ASCIIHexDecode" || decoder == "AHx") { |
offset = HexDecode(last_buf, last_size, new_buf, new_size); |
} else if (decoder == "RunLengthDecode" || decoder == "RL") { |
- if (bImageAcc && i == DecoderList.GetSize() - 1) { |
+ if (bImageAcc && i == nSize - 1) { |
ImageEncoding = "RunLengthDecode"; |
dest_buf = (uint8_t*)last_buf; |
dest_size = last_size; |