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,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; |