From 4b38229b004b7b6493cb4c4507df450adc6085f6 Mon Sep 17 00:00:00 2001 From: Dan Sinclair Date: Wed, 28 Oct 2015 17:14:42 -0400 Subject: Add PDFCharIsLineEnding helper This CL adds a helper to check if a given character is a \n or \r. R=tsepez@chromium.org Review URL: https://codereview.chromium.org/1418073006 . --- core/include/fpdfapi/fpdf_parser.h | 4 ++++ core/src/fpdfapi/fpdf_page/fpdf_page_parser_old.cpp | 4 ++-- core/src/fpdfapi/fpdf_parser/fpdf_parser_decode.cpp | 8 ++++---- core/src/fpdfapi/fpdf_parser/fpdf_parser_parser.cpp | 6 +++--- 4 files changed, 13 insertions(+), 9 deletions(-) diff --git a/core/include/fpdfapi/fpdf_parser.h b/core/include/fpdfapi/fpdf_parser.h index d121bb4f79..32509eb837 100644 --- a/core/include/fpdfapi/fpdf_parser.h +++ b/core/include/fpdfapi/fpdf_parser.h @@ -61,6 +61,10 @@ inline bool PDFCharIsOther(uint8_t c) { return PDF_CharType[c] == 'R'; } +inline bool PDFCharIsLineEnding(uint8_t c) { + return c == '\r' || c == '\n'; +} + // Indexed by 8-bit char code, contains unicode code points. extern const FX_WORD PDFDocEncoding[256]; diff --git a/core/src/fpdfapi/fpdf_page/fpdf_page_parser_old.cpp b/core/src/fpdfapi/fpdf_page/fpdf_page_parser_old.cpp index 0e059f3fc5..1fa27e3805 100644 --- a/core/src/fpdfapi/fpdf_page/fpdf_page_parser_old.cpp +++ b/core/src/fpdfapi/fpdf_page/fpdf_page_parser_old.cpp @@ -490,7 +490,7 @@ CPDF_StreamParser::SyntaxType CPDF_StreamParser::ParseNextElement() { return EndOfData; ch = m_pBuf[m_Pos++]; - if (ch == '\r' || ch == '\n') + if (PDFCharIsLineEnding(ch)) break; } } @@ -714,7 +714,7 @@ void CPDF_StreamParser::GetNextWord(FX_BOOL& bIsNumber) { if (!PositionIsInBounds()) return; ch = m_pBuf[m_Pos++]; - if (ch == '\r' || ch == '\n') + if (PDFCharIsLineEnding(ch)) break; } } diff --git a/core/src/fpdfapi/fpdf_parser/fpdf_parser_decode.cpp b/core/src/fpdfapi/fpdf_parser/fpdf_parser_decode.cpp index 1815d40194..255d0ce29c 100644 --- a/core/src/fpdfapi/fpdf_parser/fpdf_parser_decode.cpp +++ b/core/src/fpdfapi/fpdf_parser/fpdf_parser_decode.cpp @@ -80,9 +80,9 @@ FX_DWORD _A85Decode(const uint8_t* src_buf, pos = dest_size = 0; while (pos < src_size) { uint8_t ch = src_buf[pos++]; - if (ch == '\n' || ch == '\r' || ch == ' ' || ch == '\t') { + if (PDFCharIsLineEnding(ch) || ch == ' ' || ch == '\t') continue; - } + if (ch == 'z') { FXSYS_memset(dest_buf + dest_size, 0, 4); state = 0; @@ -131,9 +131,9 @@ FX_DWORD _HexDecode(const uint8_t* src_buf, FX_BOOL bFirstDigit = TRUE; for (i = 0; i < src_size; i++) { uint8_t ch = src_buf[i]; - if (ch == ' ' || ch == '\n' || ch == '\t' || ch == '\r') { + if (PDFCharIsLineEnding(ch) || ch == ' ' || ch == '\t') continue; - } + int digit; if (ch <= '9' && ch >= '0') { digit = ch - '0'; diff --git a/core/src/fpdfapi/fpdf_parser/fpdf_parser_parser.cpp b/core/src/fpdfapi/fpdf_parser/fpdf_parser_parser.cpp index e8842888c8..4ce196e90d 100644 --- a/core/src/fpdfapi/fpdf_parser/fpdf_parser_parser.cpp +++ b/core/src/fpdfapi/fpdf_parser/fpdf_parser_parser.cpp @@ -1780,7 +1780,7 @@ void CPDF_SyntaxParser::GetNextWord() { while (1) { if (!GetNextChar(ch)) return; - if (ch == '\r' || ch == '\n') + if (PDFCharIsLineEnding(ch)) break; } } @@ -1999,7 +1999,7 @@ void CPDF_SyntaxParser::ToNextWord() { while (1) { if (!GetNextChar(ch)) return; - if (ch == '\r' || ch == '\n') + if (PDFCharIsLineEnding(ch)) break; } } @@ -3767,7 +3767,7 @@ FX_BOOL CPDF_DataAvail::GetNextToken(CFX_ByteString& token) { while (1) { if (!GetNextChar(ch)) return FALSE; - if (ch == '\r' || ch == '\n') + if (PDFCharIsLineEnding(ch)) break; } } -- cgit v1.2.3