Commit e48bfce93069d4bb720649bef3e9328f1e783e1e
1 parent
e4905983
QPDFJob: convert PageSpec to used shared pointer
Showing
2 changed files
with
19 additions
and
12 deletions
include/qpdf/QPDFJob.hh
| ... | ... | @@ -123,16 +123,11 @@ class QPDFJob |
| 123 | 123 | { |
| 124 | 124 | PageSpec(std::string const& filename, |
| 125 | 125 | char const* password, |
| 126 | - char const* range) : | |
| 127 | - filename(filename), | |
| 128 | - password(password), | |
| 129 | - range(range) | |
| 130 | - { | |
| 131 | - } | |
| 126 | + std::string const& range); | |
| 132 | 127 | |
| 133 | 128 | std::string filename; |
| 134 | - char const* password; | |
| 135 | - char const* range; | |
| 129 | + std::shared_ptr<char> password; | |
| 130 | + std::string range; | |
| 136 | 131 | }; |
| 137 | 132 | |
| 138 | 133 | struct RotationSpec | ... | ... |
libqpdf/QPDFJob.cc
| ... | ... | @@ -64,7 +64,7 @@ namespace |
| 64 | 64 | struct QPDFPageData |
| 65 | 65 | { |
| 66 | 66 | QPDFPageData(std::string const& filename, |
| 67 | - QPDF* qpdf, char const* range); | |
| 67 | + QPDF* qpdf, std::string const& range); | |
| 68 | 68 | QPDFPageData(QPDFPageData const& other, int page); |
| 69 | 69 | |
| 70 | 70 | std::string filename; |
| ... | ... | @@ -272,9 +272,21 @@ ImageOptimizer::provideStreamData(int, int, Pipeline* pipeline) |
| 272 | 272 | false, false); |
| 273 | 273 | } |
| 274 | 274 | |
| 275 | +QPDFJob::PageSpec::PageSpec(std::string const& filename, | |
| 276 | + char const* password, | |
| 277 | + std::string const& range) : | |
| 278 | + filename(filename), | |
| 279 | + range(range) | |
| 280 | +{ | |
| 281 | + if (password) | |
| 282 | + { | |
| 283 | + this->password = QUtil::make_shared_cstr(password); | |
| 284 | + } | |
| 285 | +} | |
| 286 | + | |
| 275 | 287 | QPDFPageData::QPDFPageData(std::string const& filename, |
| 276 | 288 | QPDF* qpdf, |
| 277 | - char const* range) : | |
| 289 | + std::string const& range) : | |
| 278 | 290 | filename(filename), |
| 279 | 291 | qpdf(qpdf), |
| 280 | 292 | orig_pages(qpdf->getAllPages()) |
| ... | ... | @@ -282,7 +294,7 @@ QPDFPageData::QPDFPageData(std::string const& filename, |
| 282 | 294 | try |
| 283 | 295 | { |
| 284 | 296 | this->selected_pages = |
| 285 | - QUtil::parse_numrange(range, | |
| 297 | + QUtil::parse_numrange(range.c_str(), | |
| 286 | 298 | QIntC::to_int(this->orig_pages.size())); |
| 287 | 299 | } |
| 288 | 300 | catch (std::runtime_error& e) |
| ... | ... | @@ -2599,7 +2611,7 @@ QPDFJob::handlePageSpecs( |
| 2599 | 2611 | // the API, you can just create two different QPDF objects |
| 2600 | 2612 | // to the same underlying file with the same path to |
| 2601 | 2613 | // achieve the same affect. |
| 2602 | - char const* password = page_spec.password; | |
| 2614 | + char const* password = page_spec.password.get(); | |
| 2603 | 2615 | if ((! o.encryption_file.empty()) && (password == 0) && |
| 2604 | 2616 | (page_spec.filename == o.encryption_file)) |
| 2605 | 2617 | { | ... | ... |