Commit 1536a76071494306ec8661388356cf56ee53c86d

Authored by m-holger
1 parent 986a253c

Refactor Pl_QPDFTokenizer::finish

Remove unnecessary use of shared pointers and avoid unnecessary string
creation.
libqpdf/Pl_QPDFTokenizer.cc
@@ -36,20 +36,17 @@ void @@ -36,20 +36,17 @@ void
36 Pl_QPDFTokenizer::finish() 36 Pl_QPDFTokenizer::finish()
37 { 37 {
38 m->buf.finish(); 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 while (true) { 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 m->filter->handleToken(token); 43 m->filter->handleToken(token);
47 if (token.getType() == QPDFTokenizer::tt_eof) { 44 if (token.getType() == QPDFTokenizer::tt_eof) {
48 break; 45 break;
49 } else if (token.isWord("ID")) { 46 } else if (token.isWord("ID")) {
50 // Read the space after the ID. 47 // Read the space after the ID.
51 char ch = ' '; 48 char ch = ' ';
52 - input->read(&ch, 1); 49 + input.read(&ch, 1);
53 m->filter->handleToken( 50 m->filter->handleToken(
54 // line-break 51 // line-break
55 QPDFTokenizer::Token(QPDFTokenizer::tt_space, std::string(1, ch))); 52 QPDFTokenizer::Token(QPDFTokenizer::tt_space, std::string(1, ch)));
libqpdf/QPDFTokenizer.cc
@@ -904,7 +904,7 @@ QPDFTokenizer::readToken( @@ -904,7 +904,7 @@ QPDFTokenizer::readToken(
904 throw QPDFExc( 904 throw QPDFExc(
905 qpdf_e_damaged_pdf, 905 qpdf_e_damaged_pdf,
906 input.getName(), 906 input.getName(),
907 - context, 907 + context.empty() ? "offset " + std::to_string(input.getLastOffset()) : context,
908 input.getLastOffset(), 908 input.getLastOffset(),
909 token.getErrorMessage()); 909 token.getErrorMessage());
910 } 910 }