Commit b9cd693a5b36b8b0246822cb97386792045179ec
1 parent
d526d4c1
QPDFJob: allocate QPDFArgParser on stack
The previous commits have removed all references to memory from QPDFArgParser from QPDFJob. This commit removes the constraint that QPDFArgParser remain in scope. This is a prerequisite to allowing JSON as an alternative way to initialize QPDFJob and to initialize it directly using a public API.
Showing
3 changed files
with
4 additions
and
8 deletions
include/qpdf/QPDFJob.hh
| @@ -26,7 +26,6 @@ | @@ -26,7 +26,6 @@ | ||
| 26 | #include <qpdf/Constants.h> | 26 | #include <qpdf/Constants.h> |
| 27 | #include <qpdf/QPDF.hh> | 27 | #include <qpdf/QPDF.hh> |
| 28 | #include <qpdf/QPDFPageObjectHelper.hh> | 28 | #include <qpdf/QPDFPageObjectHelper.hh> |
| 29 | -#include <qpdf/QPDFArgParser.hh> | ||
| 30 | 29 | ||
| 31 | #include <memory> | 30 | #include <memory> |
| 32 | #include <string> | 31 | #include <string> |
| @@ -387,7 +386,6 @@ class QPDFJob | @@ -387,7 +386,6 @@ class QPDFJob | ||
| 387 | std::ostream* cout; | 386 | std::ostream* cout; |
| 388 | std::ostream* cerr; | 387 | std::ostream* cerr; |
| 389 | unsigned long encryption_status; | 388 | unsigned long encryption_status; |
| 390 | - std::shared_ptr<QPDFArgParser> ap; | ||
| 391 | }; | 389 | }; |
| 392 | std::shared_ptr<Members> m; | 390 | std::shared_ptr<Members> m; |
| 393 | }; | 391 | }; |
libqpdf/QPDFJob_argv.cc
| @@ -1529,11 +1529,8 @@ QPDFJob::initializeFromArgv(int argc, char* argv[], char const* progname_env) | @@ -1529,11 +1529,8 @@ QPDFJob::initializeFromArgv(int argc, char* argv[], char const* progname_env) | ||
| 1529 | { | 1529 | { |
| 1530 | progname_env = "QPDF_EXECUTABLE"; | 1530 | progname_env = "QPDF_EXECUTABLE"; |
| 1531 | } | 1531 | } |
| 1532 | - // QPDFArgParser must stay in scope for the life of the QPDFJob | ||
| 1533 | - // object since it holds dynamic memory used for argv, which is | ||
| 1534 | - // pointed to by other member variables. | ||
| 1535 | - this->m->ap = std::make_shared<QPDFArgParser>(argc, argv, progname_env); | ||
| 1536 | - setMessagePrefix(this->m->ap->getProgname()); | ||
| 1537 | - ArgParser ap(*this->m->ap, *this); | 1532 | + QPDFArgParser qap(argc, argv, progname_env); |
| 1533 | + setMessagePrefix(qap.getProgname()); | ||
| 1534 | + ArgParser ap(qap, *this); | ||
| 1538 | ap.parseOptions(); | 1535 | ap.parseOptions(); |
| 1539 | } | 1536 | } |
qpdf/qpdf.cc