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