Commit c9b54e3c087ee2a8bb49cb2121e0d6444f4aaad0
1 parent
7e623fd9
Refactor `QPDFWriter` construction to use `std::make_shared`.
Showing
3 changed files
with
21 additions
and
23 deletions
libqpdf/NNTree.cc
| @@ -666,7 +666,7 @@ NNTreeImpl::repair() | @@ -666,7 +666,7 @@ NNTreeImpl::repair() | ||
| 666 | NNTreeImpl repl(qpdf, new_node, key_type, value_valid, false); | 666 | NNTreeImpl repl(qpdf, new_node, key_type, value_valid, false); |
| 667 | std::map<QPDFObjectHandle, QPDFObjectHandle, Cmp> items; | 667 | std::map<QPDFObjectHandle, QPDFObjectHandle, Cmp> items; |
| 668 | for (auto const& [key, value]: *this) { | 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 | items.insert_or_assign(key, value); | 670 | items.insert_or_assign(key, value); |
| 671 | } | 671 | } |
| 672 | } | 672 | } |
libqpdf/QPDFWriter.cc
| @@ -265,12 +265,25 @@ class QPDFWriter::Members | @@ -265,12 +265,25 @@ class QPDFWriter::Members | ||
| 265 | friend class QPDFWriter; | 265 | friend class QPDFWriter; |
| 266 | 266 | ||
| 267 | public: | 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 | Members(Members const&) = delete; | 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 | QPDF& pdf; | 287 | QPDF& pdf; |
| 275 | QPDFObjGen root_og{-1, 0}; | 288 | QPDFObjGen root_og{-1, 0}; |
| 276 | char const* filename{"unspecified"}; | 289 | char const* filename{"unspecified"}; |
| @@ -341,34 +354,19 @@ class QPDFWriter::Members | @@ -341,34 +354,19 @@ class QPDFWriter::Members | ||
| 341 | int next_progress_report{0}; | 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 | QPDFWriter::QPDFWriter(QPDF& pdf) : | 357 | QPDFWriter::QPDFWriter(QPDF& pdf) : |
| 360 | - m(new Members(pdf)) | 358 | + m(std::make_shared<Members>(pdf)) |
| 361 | { | 359 | { |
| 362 | } | 360 | } |
| 363 | 361 | ||
| 364 | QPDFWriter::QPDFWriter(QPDF& pdf, char const* filename) : | 362 | QPDFWriter::QPDFWriter(QPDF& pdf, char const* filename) : |
| 365 | - m(new Members(pdf)) | 363 | + m(std::make_shared<Members>(pdf)) |
| 366 | { | 364 | { |
| 367 | setOutputFilename(filename); | 365 | setOutputFilename(filename); |
| 368 | } | 366 | } |
| 369 | 367 | ||
| 370 | QPDFWriter::QPDFWriter(QPDF& pdf, char const* description, FILE* file, bool close_file) : | 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 | setOutputFile(description, file, close_file); | 371 | setOutputFile(description, file, close_file); |
| 374 | } | 372 | } |
qpdf/test_driver.cc
| @@ -2624,7 +2624,7 @@ test_76(QPDF& pdf, char const* arg2) | @@ -2624,7 +2624,7 @@ test_76(QPDF& pdf, char const* arg2) | ||
| 2624 | { | 2624 | { |
| 2625 | // Embedded files. arg2 is a file to attach. Hard-code the | 2625 | // Embedded files. arg2 is a file to attach. Hard-code the |
| 2626 | // mime type and file name for test purposes. | 2626 | // mime type and file name for test purposes. |
| 2627 | - auto &efdh = QPDFEmbeddedFileDocumentHelper::get(pdf); | 2627 | + auto& efdh = QPDFEmbeddedFileDocumentHelper::get(pdf); |
| 2628 | auto fs1 = QPDFFileSpecObjectHelper::createFileSpec(pdf, "att1.txt", arg2); | 2628 | auto fs1 = QPDFFileSpecObjectHelper::createFileSpec(pdf, "att1.txt", arg2); |
| 2629 | fs1.setDescription("some text"); | 2629 | fs1.setDescription("some text"); |
| 2630 | auto efs1 = QPDFEFStreamObjectHelper(fs1.getEmbeddedFileStream()); | 2630 | auto efs1 = QPDFEFStreamObjectHelper(fs1.getEmbeddedFileStream()); |