Commit e48bfce93069d4bb720649bef3e9328f1e783e1e

Authored by Jay Berkenbilt
1 parent e4905983

QPDFJob: convert PageSpec to used shared pointer

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&amp; 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 {
... ...