Index: core/src/fpdfapi/fpdf_parser/fpdf_parser_parser.cpp |
diff --git a/core/src/fpdfapi/fpdf_parser/fpdf_parser_parser.cpp b/core/src/fpdfapi/fpdf_parser/fpdf_parser_parser.cpp |
index 1b62b06749c5d92224e9d484b703b8d985c957eb..c9679b5c57219345f470acca2e27f10b3e55df9f 100644 |
--- a/core/src/fpdfapi/fpdf_parser/fpdf_parser_parser.cpp |
+++ b/core/src/fpdfapi/fpdf_parser/fpdf_parser_parser.cpp |
@@ -1034,9 +1034,17 @@ FX_BOOL CPDF_Parser::LoadCrossRefV5(FX_FILESIZE pos, FX_FILESIZE& prev, FX_BOOL |
nSegs = 1; |
} else { |
for (FX_DWORD i = 0; i < pArray->GetCount(); i ++) { |
- IndexArray.Add(pArray->GetInteger(i)); |
+ CPDF_Object* pObj = pArray->GetElement(i); |
Tom Sepez
2014/09/09 23:53:46
Sorry, I'd be happier if you did this two at at ti
|
+ if (!pObj || (pObj->GetType() != PDFOBJ_NUMBER)) { |
+ break; |
+ } |
+ IndexArray.Add(pObj->GetInteger()); |
+ } |
+ FX_DWORD nIndexSize = IndexArray.GetSize(); |
+ if (nIndexSize % 2) { |
+ IndexArray.RemoveAt(nIndexSize-1); |
} |
- nSegs = pArray->GetCount() / 2; |
+ nSegs = nIndexSize / 2; |
} |
pArray = pStream->GetDict()->GetArray(FX_BSTRC("W")); |
if (pArray == NULL) { |