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 cbbfbd719766e71e58814a0a0603b0f00194d419..1815d401949ba5aa25ee3b188cc6ea10e84c98da 100644 |
--- a/core/src/fpdfapi/fpdf_parser/fpdf_parser_decode.cpp |
+++ b/core/src/fpdfapi/fpdf_parser/fpdf_parser_decode.cpp |
@@ -331,31 +331,27 @@ FX_BOOL PDF_DataDecode(const uint8_t* src_buf, |
{ |
CPDF_Object* pDecoder = |
- pDict ? pDict->GetElementValue(FX_BSTRC("Filter")) : NULL; |
- if (!pDecoder || (pDecoder->GetType() != PDFOBJ_ARRAY && !pDecoder->IsName())) |
+ pDict ? pDict->GetElementValue(FX_BSTRC("Filter")) : nullptr; |
+ if (!pDecoder || (!pDecoder->IsArray() && !pDecoder->IsName())) |
return FALSE; |
CPDF_Object* pParams = |
- pDict ? pDict->GetElementValue(FX_BSTRC("DecodeParms")) : NULL; |
+ pDict ? pDict->GetElementValue(FX_BSTRC("DecodeParms")) : nullptr; |
CFX_ByteStringArray DecoderList; |
CFX_PtrArray ParamList; |
- if (pDecoder->GetType() == PDFOBJ_ARRAY) { |
- if (pParams && pParams->GetType() != PDFOBJ_ARRAY) { |
- pParams = NULL; |
- } |
- CPDF_Array* pDecoders = (CPDF_Array*)pDecoder; |
+ if (CPDF_Array* pDecoders = pDecoder->AsArray()) { |
+ CPDF_Array* pParamsArray = ToArray(pParams); |
+ if (!pParamsArray) |
+ pParams = nullptr; |
+ |
for (FX_DWORD i = 0; i < pDecoders->GetCount(); i++) { |
CFX_ByteStringC str = pDecoders->GetConstString(i); |
DecoderList.Add(str); |
- if (pParams) { |
- ParamList.Add(((CPDF_Array*)pParams)->GetDict(i)); |
- } else { |
- ParamList.Add(NULL); |
- } |
+ ParamList.Add(pParams ? pParamsArray->GetDict(i) : nullptr); |
} |
} else { |
DecoderList.Add(pDecoder->GetConstString()); |
- ParamList.Add(pParams ? pParams->GetDict() : NULL); |
+ ParamList.Add(pParams ? pParams->GetDict() : nullptr); |
} |
uint8_t* last_buf = (uint8_t*)src_buf; |
FX_DWORD last_size = src_size; |