From 7475b353d0d19e68c9a0d73aabad58606213815a Mon Sep 17 00:00:00 2001 From: m-holger Date: Tue, 13 May 2025 16:48:33 +0100 Subject: [PATCH] In QPDFArgParser refactor argv handling to use `std::vector` instead of shared pointers. --- libqpdf/QPDFArgParser.cc | 20 ++++++++++---------- libqpdf/qpdf/QPDFArgParser.hh | 4 ++-- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/libqpdf/QPDFArgParser.cc b/libqpdf/QPDFArgParser.cc index 145854c..9433793 100644 --- a/libqpdf/QPDFArgParser.cc +++ b/libqpdf/QPDFArgParser.cc @@ -257,13 +257,13 @@ QPDFArgParser::handleArgFileArguments() m->new_argv.emplace_back(m->argv[i]); } } - m->argv_ph = QUtil::make_shared_array(1 + m->new_argv.size()); - for (size_t i = 0; i < m->new_argv.size(); ++i) { - m->argv_ph.get()[i] = m->new_argv.at(i).data(); + m->argv_ph.reserve(1 + m->new_argv.size()); + for (auto const& a: m->new_argv) { + m->argv_ph.push_back(a.data()); } m->argc = QIntC::to_int(m->new_argv.size()); - m->argv_ph.get()[m->argc] = nullptr; - m->argv = m->argv_ph.get(); + m->argv_ph.push_back(nullptr); + m->argv = m->argv_ph.data(); } void @@ -329,13 +329,13 @@ QPDFArgParser::handleBashArguments() m->bash_argv.emplace_back(m->argv[0]); } // Explicitly discard any non-space-terminated word. The "current word" is handled specially. - m->bash_argv_ph = QUtil::make_shared_array(1 + m->bash_argv.size()); - for (size_t i = 0; i < m->bash_argv.size(); ++i) { - m->bash_argv_ph.get()[i] = m->bash_argv.at(i).data(); + m->bash_argv_ph.reserve(1 + m->bash_argv.size()); + for (auto const& a: m->bash_argv) { + m->bash_argv_ph.push_back(a.data()); } m->argc = QIntC::to_int(m->bash_argv.size()); - m->bash_argv_ph.get()[m->argc] = nullptr; - m->argv = m->bash_argv_ph.get(); + m->bash_argv_ph.push_back(nullptr); + m->argv = m->bash_argv_ph.data(); } void diff --git a/libqpdf/qpdf/QPDFArgParser.hh b/libqpdf/qpdf/QPDFArgParser.hh index 3898404..f5c9620 100644 --- a/libqpdf/qpdf/QPDFArgParser.hh +++ b/libqpdf/qpdf/QPDFArgParser.hh @@ -221,8 +221,8 @@ class QPDFArgParser bare_arg_handler_t final_check_handler; std::vector new_argv; std::vector bash_argv; - std::shared_ptr argv_ph; - std::shared_ptr bash_argv_ph; + std::vector argv_ph; + std::vector bash_argv_ph; std::map help_topics; std::map option_help; std::string help_footer; -- libgit2 0.21.4