diff options
author | Jay Berkenbilt <ejb@ql.org> | 2022-08-07 15:09:04 +0200 |
---|---|---|
committer | Jay Berkenbilt <ejb@ql.org> | 2022-08-07 15:21:01 +0200 |
commit | 32e30a3af2f3198e1522a42bdde8faa1cd1a88df (patch) | |
tree | 9a0953eca8a4af68a80327781c07d033346dbb0f | |
parent | b90adb1c6ce922fe80d0e3287d76b181bffa4c44 (diff) | |
download | qpdf-32e30a3af2f3198e1522a42bdde8faa1cd1a88df.tar.zst |
Resolve QPDF{Name,Number} tree helper linker issues (fixes #745)
This is a guess...I'm not sure exactly why there are linker issues or
how to reproduce them.
-rw-r--r-- | include/qpdf/QPDFNameTreeObjectHelper.hh | 8 | ||||
-rw-r--r-- | include/qpdf/QPDFNumberTreeObjectHelper.hh | 8 | ||||
-rw-r--r-- | libqpdf/QPDFNameTreeObjectHelper.cc | 7 | ||||
-rw-r--r-- | libqpdf/QPDFNumberTreeObjectHelper.cc | 7 |
4 files changed, 22 insertions, 8 deletions
diff --git a/include/qpdf/QPDFNameTreeObjectHelper.hh b/include/qpdf/QPDFNameTreeObjectHelper.hh index 7093ca2e..006ab158 100644 --- a/include/qpdf/QPDFNameTreeObjectHelper.hh +++ b/include/qpdf/QPDFNameTreeObjectHelper.hh @@ -42,7 +42,7 @@ class NNTreeImpl; class NNTreeIterator; class NNTreeDetails; -class QPDFNameTreeObjectHelper: public QPDFObjectHelper +class QPDF_DLL_CLASS QPDFNameTreeObjectHelper: public QPDFObjectHelper { public: // The qpdf object is required so that this class can issue @@ -55,7 +55,7 @@ class QPDFNameTreeObjectHelper: public QPDFObjectHelper static QPDFNameTreeObjectHelper newEmpty(QPDF&, bool auto_repair = true); QPDF_DLL - virtual ~QPDFNameTreeObjectHelper() = default; + virtual ~QPDFNameTreeObjectHelper(); // Return whether the number tree has an explicit entry for this // number. @@ -67,7 +67,7 @@ class QPDFNameTreeObjectHelper: public QPDFObjectHelper QPDF_DLL bool findObject(std::string const& utf8, QPDFObjectHandle& oh); - class iterator + class QPDF_DLL_PRIVATE iterator { friend class QPDFNameTreeObjectHelper; @@ -181,7 +181,7 @@ class QPDFNameTreeObjectHelper: public QPDFObjectHelper void setSplitThreshold(int); private: - class Members + class QPDF_DLL_PRIVATE Members { friend class QPDFNameTreeObjectHelper; diff --git a/include/qpdf/QPDFNumberTreeObjectHelper.hh b/include/qpdf/QPDFNumberTreeObjectHelper.hh index b053b5f4..c1ffc251 100644 --- a/include/qpdf/QPDFNumberTreeObjectHelper.hh +++ b/include/qpdf/QPDFNumberTreeObjectHelper.hh @@ -39,7 +39,7 @@ class NNTreeImpl; class NNTreeIterator; class NNTreeDetails; -class QPDFNumberTreeObjectHelper: public QPDFObjectHelper +class QPDF_DLL_CLASS QPDFNumberTreeObjectHelper: public QPDFObjectHelper { public: // The qpdf object is required so that this class can issue @@ -49,7 +49,7 @@ class QPDFNumberTreeObjectHelper: public QPDFObjectHelper QPDFObjectHandle, QPDF&, bool auto_repair = true); QPDF_DLL - virtual ~QPDFNumberTreeObjectHelper() = default; + virtual ~QPDFNumberTreeObjectHelper(); // Create an empty number tree QPDF_DLL @@ -85,7 +85,7 @@ class QPDFNumberTreeObjectHelper: public QPDFObjectHelper bool findObjectAtOrBelow( numtree_number idx, QPDFObjectHandle& oh, numtree_number& offset); - class iterator + class QPDF_DLL_PRIVATE iterator { friend class QPDFNumberTreeObjectHelper; @@ -200,7 +200,7 @@ class QPDFNumberTreeObjectHelper: public QPDFObjectHelper void setSplitThreshold(int); private: - class Members + class QPDF_DLL_PRIVATE Members { friend class QPDFNumberTreeObjectHelper; typedef QPDFNumberTreeObjectHelper::numtree_number numtree_number; diff --git a/libqpdf/QPDFNameTreeObjectHelper.cc b/libqpdf/QPDFNameTreeObjectHelper.cc index f1adca0a..f388dccf 100644 --- a/libqpdf/QPDFNameTreeObjectHelper.cc +++ b/libqpdf/QPDFNameTreeObjectHelper.cc @@ -34,6 +34,13 @@ namespace static NameTreeDetails name_tree_details; +QPDFNameTreeObjectHelper::~QPDFNameTreeObjectHelper() +{ + // Must be explicit and not inline -- see QPDF_DLL_CLASS in + // README-maintainer. For this specific class, see github issue + // #745. +} + QPDFNameTreeObjectHelper::Members::Members( QPDFObjectHandle& oh, QPDF& q, bool auto_repair) : impl(std::make_shared<NNTreeImpl>(name_tree_details, q, oh, auto_repair)) diff --git a/libqpdf/QPDFNumberTreeObjectHelper.cc b/libqpdf/QPDFNumberTreeObjectHelper.cc index 76eec678..6443416d 100644 --- a/libqpdf/QPDFNumberTreeObjectHelper.cc +++ b/libqpdf/QPDFNumberTreeObjectHelper.cc @@ -35,6 +35,13 @@ namespace static NumberTreeDetails number_tree_details; +QPDFNumberTreeObjectHelper::~QPDFNumberTreeObjectHelper() +{ + // Must be explicit and not inline -- see QPDF_DLL_CLASS in + // README-maintainer. For this specific class, see github issue + // #745. +} + QPDFNumberTreeObjectHelper::Members::Members( QPDFObjectHandle& oh, QPDF& q, bool auto_repair) : impl(std::make_shared<NNTreeImpl>(number_tree_details, q, oh, auto_repair)) |