From 4974090fa7d666a26d136f63c4b9c1da1cf062d8 Mon Sep 17 00:00:00 2001 From: m-holger Date: Wed, 27 Aug 2025 18:16:27 +0100 Subject: [PATCH] Refactor `QPDFEmbeddedFileDocumentHelper::Members` to use `std::unique_ptr`, improve memory management, and simplify initialization logic. --- include/qpdf/QPDFEmbeddedFileDocumentHelper.hh | 14 +------------- libqpdf/QPDFEmbeddedFileDocumentHelper.cc | 19 ++++++++++++++----- 2 files changed, 15 insertions(+), 18 deletions(-) diff --git a/include/qpdf/QPDFEmbeddedFileDocumentHelper.hh b/include/qpdf/QPDFEmbeddedFileDocumentHelper.hh index f63a491..1a0f606 100644 --- a/include/qpdf/QPDFEmbeddedFileDocumentHelper.hh +++ b/include/qpdf/QPDFEmbeddedFileDocumentHelper.hh @@ -67,19 +67,7 @@ class QPDFEmbeddedFileDocumentHelper: public QPDFDocumentHelper private: void initEmbeddedFiles(); - class Members - { - friend class QPDFEmbeddedFileDocumentHelper; - - public: - ~Members() = default; - - private: - Members() = default; - Members(Members const&) = delete; - - std::shared_ptr embedded_files; - }; + class Members; std::shared_ptr m; }; diff --git a/libqpdf/QPDFEmbeddedFileDocumentHelper.cc b/libqpdf/QPDFEmbeddedFileDocumentHelper.cc index 6d1653d..1da97d4 100644 --- a/libqpdf/QPDFEmbeddedFileDocumentHelper.cc +++ b/libqpdf/QPDFEmbeddedFileDocumentHelper.cc @@ -30,16 +30,25 @@ // >> // >> +class QPDFEmbeddedFileDocumentHelper::Members +{ + public: + Members() = default; + Members(Members const&) = delete; + ~Members() = default; + + std::unique_ptr embedded_files; +}; + QPDFEmbeddedFileDocumentHelper::QPDFEmbeddedFileDocumentHelper(QPDF& qpdf) : QPDFDocumentHelper(qpdf), - m(new Members()) + m(std::make_shared()) { - auto root = qpdf.getRoot(); - auto names = root.getKey("/Names"); + auto names = qpdf.getRoot().getKey("/Names"); if (names.isDictionary()) { auto embedded_files = names.getKey("/EmbeddedFiles"); if (embedded_files.isDictionary()) { - m->embedded_files = std::make_shared(embedded_files, qpdf); + m->embedded_files = std::make_unique(embedded_files, qpdf); } } } @@ -65,7 +74,7 @@ QPDFEmbeddedFileDocumentHelper::initEmbeddedFiles() if (!embedded_files.isDictionary()) { auto nth = QPDFNameTreeObjectHelper::newEmpty(qpdf); names.replaceKey("/EmbeddedFiles", nth.getObjectHandle()); - m->embedded_files = std::make_shared(nth); + m->embedded_files = std::make_unique(nth); } } -- libgit2 0.21.4