Commit 2697ba49bce8113c29eab4367d14936ccb2f500e

Authored by m-holger
1 parent f9530a58

Add private method QPDFTokenizer::inHexstring

include/qpdf/QPDFTokenizer.hh
... ... @@ -197,7 +197,6 @@ class QPDFTokenizer
197 197 bool isSpace(char);
198 198 bool isDelimiter(char);
199 199 void findEI(std::shared_ptr<InputSource> input);
200   - void handleCharacter(char);
201 200  
202 201 enum state_e {
203 202 st_top,
... ... @@ -212,6 +211,8 @@ class QPDFTokenizer
212 211 st_token_ready
213 212 };
214 213  
  214 + void handleCharacter(char);
  215 + void inHexstring(char);
215 216 void reset();
216 217  
217 218 // Lexer state
... ...
libqpdf/QPDFTokenizer.cc
... ... @@ -331,7 +331,8 @@ QPDFTokenizer::handleCharacter(char ch)
331 331 return;
332 332 }
333 333 this->state = st_in_hexstring;
334   - break;
  334 + inHexstring(ch);
  335 + return;
335 336  
336 337 case st_gt:
337 338 if (ch == '>') {
... ... @@ -469,13 +470,18 @@ QPDFTokenizer::handleCharacter(char ch)
469 470 return;
470 471  
471 472 case (st_in_hexstring):
472   - break;
  473 + inHexstring(ch);
  474 + return;
473 475  
474 476 default:
475 477 throw std::logic_error(
476 478 "INTERNAL ERROR: invalid state while reading token");
477 479 }
  480 +}
478 481  
  482 +void
  483 +QPDFTokenizer::inHexstring(char ch)
  484 +{
479 485 if (ch == '>') {
480 486 this->type = tt_string;
481 487 this->state = st_token_ready;
... ...