Commit c9b54e3c087ee2a8bb49cb2121e0d6444f4aaad0

Authored by m-holger
1 parent 7e623fd9

Refactor `QPDFWriter` construction to use `std::make_shared`.

libqpdf/NNTree.cc
... ... @@ -666,7 +666,7 @@ NNTreeImpl::repair()
666 666 NNTreeImpl repl(qpdf, new_node, key_type, value_valid, false);
667 667 std::map<QPDFObjectHandle, QPDFObjectHandle, Cmp> items;
668 668 for (auto const& [key, value]: *this) {
669   - if (key && value && repl.keyValid(key) && repl.value_valid(value) ) {
  669 + if (key && value && repl.keyValid(key) && repl.value_valid(value)) {
670 670 items.insert_or_assign(key, value);
671 671 }
672 672 }
... ...
libqpdf/QPDFWriter.cc
... ... @@ -265,12 +265,25 @@ class QPDFWriter::Members
265 265 friend class QPDFWriter;
266 266  
267 267 public:
268   - ~Members();
  268 + Members(QPDF& pdf) :
  269 + pdf(pdf),
  270 + root_og(
  271 + pdf.getRoot().getObjGen().isIndirect() ? pdf.getRoot().getObjGen() : QPDFObjGen(-1, 0)),
  272 + pipeline_stack(pipeline)
  273 + {
  274 + }
269 275  
270   - private:
271   - Members(QPDF& pdf);
272 276 Members(Members const&) = delete;
273 277  
  278 + ~Members()
  279 + {
  280 + if (file && close_file) {
  281 + fclose(file);
  282 + }
  283 + delete output_buffer;
  284 + }
  285 +
  286 + private:
274 287 QPDF& pdf;
275 288 QPDFObjGen root_og{-1, 0};
276 289 char const* filename{"unspecified"};
... ... @@ -341,34 +354,19 @@ class QPDFWriter::Members
341 354 int next_progress_report{0};
342 355 };
343 356  
344   -QPDFWriter::Members::Members(QPDF& pdf) :
345   - pdf(pdf),
346   - root_og(pdf.getRoot().getObjGen().isIndirect() ? pdf.getRoot().getObjGen() : QPDFObjGen(-1, 0)),
347   - pipeline_stack(pipeline)
348   -{
349   -}
350   -
351   -QPDFWriter::Members::~Members()
352   -{
353   - if (file && close_file) {
354   - fclose(file);
355   - }
356   - delete output_buffer;
357   -}
358   -
359 357 QPDFWriter::QPDFWriter(QPDF& pdf) :
360   - m(new Members(pdf))
  358 + m(std::make_shared<Members>(pdf))
361 359 {
362 360 }
363 361  
364 362 QPDFWriter::QPDFWriter(QPDF& pdf, char const* filename) :
365   - m(new Members(pdf))
  363 + m(std::make_shared<Members>(pdf))
366 364 {
367 365 setOutputFilename(filename);
368 366 }
369 367  
370 368 QPDFWriter::QPDFWriter(QPDF& pdf, char const* description, FILE* file, bool close_file) :
371   - m(new Members(pdf))
  369 + m(std::make_shared<Members>(pdf))
372 370 {
373 371 setOutputFile(description, file, close_file);
374 372 }
... ...
qpdf/test_driver.cc
... ... @@ -2624,7 +2624,7 @@ test_76(QPDF&amp; pdf, char const* arg2)
2624 2624 {
2625 2625 // Embedded files. arg2 is a file to attach. Hard-code the
2626 2626 // mime type and file name for test purposes.
2627   - auto &efdh = QPDFEmbeddedFileDocumentHelper::get(pdf);
  2627 + auto& efdh = QPDFEmbeddedFileDocumentHelper::get(pdf);
2628 2628 auto fs1 = QPDFFileSpecObjectHelper::createFileSpec(pdf, "att1.txt", arg2);
2629 2629 fs1.setDescription("some text");
2630 2630 auto efs1 = QPDFEFStreamObjectHelper(fs1.getEmbeddedFileStream());
... ...