Commit 29cd8f4f53dcad517ecba37978d6073daf43d819
1 parent
81823f40
Avoid unnecessary string copies in QPDFParser::parse
Fixes #864. QPDFTokenizer::getValue originally had a std::string_view return type, which was changed to std::string without removing some unnecessary string creation.
Showing
1 changed file
with
4 additions
and
5 deletions
libqpdf/QPDFParser.cc
| @@ -156,8 +156,7 @@ QPDFParser::parse(bool& empty, bool content_stream) | @@ -156,8 +156,7 @@ QPDFParser::parse(bool& empty, bool content_stream) | ||
| 156 | break; | 156 | break; |
| 157 | 157 | ||
| 158 | case QPDFTokenizer::tt_integer: | 158 | case QPDFTokenizer::tt_integer: |
| 159 | - object = QPDF_Integer::create( | ||
| 160 | - QUtil::string_to_ll(std::string(tokenizer.getValue()).c_str())); | 159 | + object = QPDF_Integer::create(QUtil::string_to_ll(tokenizer.getValue().c_str())); |
| 161 | break; | 160 | break; |
| 162 | 161 | ||
| 163 | case QPDFTokenizer::tt_real: | 162 | case QPDFTokenizer::tt_real: |
| @@ -166,7 +165,7 @@ QPDFParser::parse(bool& empty, bool content_stream) | @@ -166,7 +165,7 @@ QPDFParser::parse(bool& empty, bool content_stream) | ||
| 166 | 165 | ||
| 167 | case QPDFTokenizer::tt_name: | 166 | case QPDFTokenizer::tt_name: |
| 168 | { | 167 | { |
| 169 | - auto name = tokenizer.getValue(); | 168 | + auto const& name = tokenizer.getValue(); |
| 170 | object = QPDF_Name::create(name); | 169 | object = QPDF_Name::create(name); |
| 171 | 170 | ||
| 172 | if (name == "/Contents") { | 171 | if (name == "/Contents") { |
| @@ -179,7 +178,7 @@ QPDFParser::parse(bool& empty, bool content_stream) | @@ -179,7 +178,7 @@ QPDFParser::parse(bool& empty, bool content_stream) | ||
| 179 | 178 | ||
| 180 | case QPDFTokenizer::tt_word: | 179 | case QPDFTokenizer::tt_word: |
| 181 | { | 180 | { |
| 182 | - auto value = tokenizer.getValue(); | 181 | + auto const& value = tokenizer.getValue(); |
| 183 | auto size = olist.size(); | 182 | auto size = olist.size(); |
| 184 | if (content_stream) { | 183 | if (content_stream) { |
| 185 | object = QPDF_Operator::create(value); | 184 | object = QPDF_Operator::create(value); |
| @@ -226,7 +225,7 @@ QPDFParser::parse(bool& empty, bool content_stream) | @@ -226,7 +225,7 @@ QPDFParser::parse(bool& empty, bool content_stream) | ||
| 226 | 225 | ||
| 227 | case QPDFTokenizer::tt_string: | 226 | case QPDFTokenizer::tt_string: |
| 228 | { | 227 | { |
| 229 | - auto val = tokenizer.getValue(); | 228 | + auto const& val = tokenizer.getValue(); |
| 230 | if (decrypter) { | 229 | if (decrypter) { |
| 231 | if (b_contents) { | 230 | if (b_contents) { |
| 232 | frame.contents_string = val; | 231 | frame.contents_string = val; |