Commit 1536a76071494306ec8661388356cf56ee53c86d
1 parent
986a253c
Refactor Pl_QPDFTokenizer::finish
Remove unnecessary use of shared pointers and avoid unnecessary string creation.
Showing
2 changed files
with
5 additions
and
8 deletions
libqpdf/Pl_QPDFTokenizer.cc
| ... | ... | @@ -36,20 +36,17 @@ void |
| 36 | 36 | Pl_QPDFTokenizer::finish() |
| 37 | 37 | { |
| 38 | 38 | m->buf.finish(); |
| 39 | - auto input = std::shared_ptr<InputSource>( | |
| 40 | - // line-break | |
| 41 | - new BufferInputSource("tokenizer data", m->buf.getBuffer(), true)); | |
| 42 | - | |
| 39 | + auto input = BufferInputSource("tokenizer data", m->buf.getBuffer(), true); | |
| 40 | + std::string empty; | |
| 43 | 41 | while (true) { |
| 44 | - QPDFTokenizer::Token token = | |
| 45 | - m->tokenizer.readToken(input, "offset " + std::to_string(input->tell()), true); | |
| 42 | + auto token = m->tokenizer.readToken(input, empty, true); | |
| 46 | 43 | m->filter->handleToken(token); |
| 47 | 44 | if (token.getType() == QPDFTokenizer::tt_eof) { |
| 48 | 45 | break; |
| 49 | 46 | } else if (token.isWord("ID")) { |
| 50 | 47 | // Read the space after the ID. |
| 51 | 48 | char ch = ' '; |
| 52 | - input->read(&ch, 1); | |
| 49 | + input.read(&ch, 1); | |
| 53 | 50 | m->filter->handleToken( |
| 54 | 51 | // line-break |
| 55 | 52 | QPDFTokenizer::Token(QPDFTokenizer::tt_space, std::string(1, ch))); | ... | ... |
libqpdf/QPDFTokenizer.cc
| ... | ... | @@ -904,7 +904,7 @@ QPDFTokenizer::readToken( |
| 904 | 904 | throw QPDFExc( |
| 905 | 905 | qpdf_e_damaged_pdf, |
| 906 | 906 | input.getName(), |
| 907 | - context, | |
| 907 | + context.empty() ? "offset " + std::to_string(input.getLastOffset()) : context, | |
| 908 | 908 | input.getLastOffset(), |
| 909 | 909 | token.getErrorMessage()); |
| 910 | 910 | } | ... | ... |