Commit 2697ba49bce8113c29eab4367d14936ccb2f500e
1 parent
f9530a58
Add private method QPDFTokenizer::inHexstring
Showing
2 changed files
with
10 additions
and
3 deletions
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; | ... | ... |