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 ad843bc6be373bb63be48e568c850d547e823dd6..febebacdb613d64aab93a131ca91a3677b3643e8 100644 |
--- a/core/src/fpdfapi/fpdf_parser/fpdf_parser_parser.cpp |
+++ b/core/src/fpdfapi/fpdf_parser/fpdf_parser_parser.cpp |
@@ -608,55 +608,40 @@ FX_BOOL CPDF_Parser::RebuildCrossRef() { |
uint8_t byte = buffer[i]; |
switch (state) { |
case ParserState::kDefault: |
- if (PDFCharIsWhitespace(byte)) |
+ if (PDFCharIsWhitespace(byte)) { |
state = ParserState::kWhitespace; |
- |
- if (std::isdigit(byte)) { |
+ } else if (std::isdigit(byte)) { |
--i; |
state = ParserState::kWhitespace; |
- } |
- |
- if (byte == '%') { |
+ } else if (byte == '%') { |
inside_index = 0; |
state = ParserState::kComment; |
- } |
- |
- if (byte == '(') { |
+ } else if (byte == '(') { |
state = ParserState::kString; |
depth = 1; |
- } |
- |
- if (byte == '<') { |
+ } else if (byte == '<') { |
inside_index = 1; |
state = ParserState::kHexString; |
- } |
- |
- if (byte == '\\') |
+ } else if (byte == '\\') { |
state = ParserState::kEscapedString; |
- |
- if (byte == 't') { |
+ } else if (byte == 't') { |
state = ParserState::kTrailer; |
inside_index = 1; |
} |
break; |
case ParserState::kWhitespace: |
- if (PDFCharIsWhitespace(byte)) { |
- break; |
- } else if (std::isdigit(byte)) { |
+ if (std::isdigit(byte)) { |
start_pos = pos + i; |
state = ParserState::kObjNum; |
objnum = FXSYS_toDecimalDigit(byte); |
- |
} else if (byte == 't') { |
state = ParserState::kTrailer; |
inside_index = 1; |
- |
} else if (byte == 'x') { |
state = ParserState::kXref; |
inside_index = 1; |
- |
- } else { |
+ } else if (!PDFCharIsWhitespace(byte)) { |
--i; |
state = ParserState::kDefault; |
} |
@@ -665,7 +650,6 @@ FX_BOOL CPDF_Parser::RebuildCrossRef() { |
case ParserState::kObjNum: |
if (std::isdigit(byte)) { |
objnum = objnum * 10 + FXSYS_toDecimalDigit(byte); |
- break; |
} else if (PDFCharIsWhitespace(byte)) { |
state = ParserState::kPostObjNum; |
} else { |
@@ -680,12 +664,10 @@ FX_BOOL CPDF_Parser::RebuildCrossRef() { |
start_pos1 = pos + i; |
state = ParserState::kGenNum; |
gennum = FXSYS_toDecimalDigit(byte); |
- } else if (PDFCharIsWhitespace(byte)) { |
- break; |
} else if (byte == 't') { |
state = ParserState::kTrailer; |
inside_index = 1; |
- } else { |
+ } else if (!PDFCharIsWhitespace(byte)) { |
--i; |
state = ParserState::kDefault; |
} |
@@ -694,7 +676,6 @@ FX_BOOL CPDF_Parser::RebuildCrossRef() { |
case ParserState::kGenNum: |
if (std::isdigit(byte)) { |
gennum = gennum * 10 + FXSYS_toDecimalDigit(byte); |
- break; |
} else if (PDFCharIsWhitespace(byte)) { |
state = ParserState::kPostGenNum; |
} else { |
@@ -707,8 +688,6 @@ FX_BOOL CPDF_Parser::RebuildCrossRef() { |
if (byte == 'o') { |
state = ParserState::kBeginObj; |
inside_index = 1; |
- } else if (PDFCharIsWhitespace(byte)) { |
- break; |
} else if (std::isdigit(byte)) { |
objnum = gennum; |
gennum = FXSYS_toDecimalDigit(byte); |
@@ -718,7 +697,7 @@ FX_BOOL CPDF_Parser::RebuildCrossRef() { |
} else if (byte == 't') { |
state = ParserState::kTrailer; |
inside_index = 1; |
- } else { |
+ } else if (!PDFCharIsWhitespace(byte)) { |
--i; |
state = ParserState::kDefault; |
} |
@@ -3016,7 +2995,7 @@ CPDF_Object* CPDF_DataAvail::GetObject(FX_DWORD objnum, |
if (m_pDocument) { |
size = GetObjectSize(objnum, offset); |
- pParser = (CPDF_Parser*)(m_pDocument->GetParser()); |
+ pParser = m_pDocument->GetParser(); |
} else { |
size = (FX_DWORD)m_parser.GetObjectSize(objnum); |
offset = m_parser.GetObjectOffset(objnum); |
@@ -3116,7 +3095,7 @@ FX_BOOL CPDF_DataAvail::PreparePageItem() { |
} |
m_PagesObjNum = pRef->GetRefObjNum(); |
- m_pCurrentParser = (CPDF_Parser*)m_pDocument->GetParser(); |
+ m_pCurrentParser = m_pDocument->GetParser(); |
m_docStatus = PDF_DATAAVAIL_PAGETREE; |
return TRUE; |
} |
@@ -4187,7 +4166,7 @@ IPDF_DataAvail::DocAvailStatus CPDF_DataAvail::IsPageAvail( |
if (!LoadAllFile(pHints)) { |
return DataNotAvailable; |
} |
- ((CPDF_Parser*)m_pDocument->GetParser())->RebuildCrossRef(); |
+ m_pDocument->GetParser()->RebuildCrossRef(); |
ResetFirstCheck(iPage); |
return DataAvailable; |
} |