Commit 32e30a3af2f3198e1522a42bdde8faa1cd1a88df
1 parent
b90adb1c
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.
Showing
4 changed files
with
22 additions
and
8 deletions
include/qpdf/QPDFNameTreeObjectHelper.hh
| ... | ... | @@ -42,7 +42,7 @@ class NNTreeImpl; |
| 42 | 42 | class NNTreeIterator; |
| 43 | 43 | class NNTreeDetails; |
| 44 | 44 | |
| 45 | -class QPDFNameTreeObjectHelper: public QPDFObjectHelper | |
| 45 | +class QPDF_DLL_CLASS QPDFNameTreeObjectHelper: public QPDFObjectHelper | |
| 46 | 46 | { |
| 47 | 47 | public: |
| 48 | 48 | // The qpdf object is required so that this class can issue |
| ... | ... | @@ -55,7 +55,7 @@ class QPDFNameTreeObjectHelper: public QPDFObjectHelper |
| 55 | 55 | static QPDFNameTreeObjectHelper newEmpty(QPDF&, bool auto_repair = true); |
| 56 | 56 | |
| 57 | 57 | QPDF_DLL |
| 58 | - virtual ~QPDFNameTreeObjectHelper() = default; | |
| 58 | + virtual ~QPDFNameTreeObjectHelper(); | |
| 59 | 59 | |
| 60 | 60 | // Return whether the number tree has an explicit entry for this |
| 61 | 61 | // number. |
| ... | ... | @@ -67,7 +67,7 @@ class QPDFNameTreeObjectHelper: public QPDFObjectHelper |
| 67 | 67 | QPDF_DLL |
| 68 | 68 | bool findObject(std::string const& utf8, QPDFObjectHandle& oh); |
| 69 | 69 | |
| 70 | - class iterator | |
| 70 | + class QPDF_DLL_PRIVATE iterator | |
| 71 | 71 | { |
| 72 | 72 | friend class QPDFNameTreeObjectHelper; |
| 73 | 73 | |
| ... | ... | @@ -181,7 +181,7 @@ class QPDFNameTreeObjectHelper: public QPDFObjectHelper |
| 181 | 181 | void setSplitThreshold(int); |
| 182 | 182 | |
| 183 | 183 | private: |
| 184 | - class Members | |
| 184 | + class QPDF_DLL_PRIVATE Members | |
| 185 | 185 | { |
| 186 | 186 | friend class QPDFNameTreeObjectHelper; |
| 187 | 187 | ... | ... |
include/qpdf/QPDFNumberTreeObjectHelper.hh
| ... | ... | @@ -39,7 +39,7 @@ class NNTreeImpl; |
| 39 | 39 | class NNTreeIterator; |
| 40 | 40 | class NNTreeDetails; |
| 41 | 41 | |
| 42 | -class QPDFNumberTreeObjectHelper: public QPDFObjectHelper | |
| 42 | +class QPDF_DLL_CLASS QPDFNumberTreeObjectHelper: public QPDFObjectHelper | |
| 43 | 43 | { |
| 44 | 44 | public: |
| 45 | 45 | // The qpdf object is required so that this class can issue |
| ... | ... | @@ -49,7 +49,7 @@ class QPDFNumberTreeObjectHelper: public QPDFObjectHelper |
| 49 | 49 | QPDFObjectHandle, QPDF&, bool auto_repair = true); |
| 50 | 50 | |
| 51 | 51 | QPDF_DLL |
| 52 | - virtual ~QPDFNumberTreeObjectHelper() = default; | |
| 52 | + virtual ~QPDFNumberTreeObjectHelper(); | |
| 53 | 53 | |
| 54 | 54 | // Create an empty number tree |
| 55 | 55 | QPDF_DLL |
| ... | ... | @@ -85,7 +85,7 @@ class QPDFNumberTreeObjectHelper: public QPDFObjectHelper |
| 85 | 85 | bool findObjectAtOrBelow( |
| 86 | 86 | numtree_number idx, QPDFObjectHandle& oh, numtree_number& offset); |
| 87 | 87 | |
| 88 | - class iterator | |
| 88 | + class QPDF_DLL_PRIVATE iterator | |
| 89 | 89 | { |
| 90 | 90 | friend class QPDFNumberTreeObjectHelper; |
| 91 | 91 | |
| ... | ... | @@ -200,7 +200,7 @@ class QPDFNumberTreeObjectHelper: public QPDFObjectHelper |
| 200 | 200 | void setSplitThreshold(int); |
| 201 | 201 | |
| 202 | 202 | private: |
| 203 | - class Members | |
| 203 | + class QPDF_DLL_PRIVATE Members | |
| 204 | 204 | { |
| 205 | 205 | friend class QPDFNumberTreeObjectHelper; |
| 206 | 206 | typedef QPDFNumberTreeObjectHelper::numtree_number numtree_number; | ... | ... |
libqpdf/QPDFNameTreeObjectHelper.cc
| ... | ... | @@ -34,6 +34,13 @@ namespace |
| 34 | 34 | |
| 35 | 35 | static NameTreeDetails name_tree_details; |
| 36 | 36 | |
| 37 | +QPDFNameTreeObjectHelper::~QPDFNameTreeObjectHelper() | |
| 38 | +{ | |
| 39 | + // Must be explicit and not inline -- see QPDF_DLL_CLASS in | |
| 40 | + // README-maintainer. For this specific class, see github issue | |
| 41 | + // #745. | |
| 42 | +} | |
| 43 | + | |
| 37 | 44 | QPDFNameTreeObjectHelper::Members::Members( |
| 38 | 45 | QPDFObjectHandle& oh, QPDF& q, bool auto_repair) : |
| 39 | 46 | impl(std::make_shared<NNTreeImpl>(name_tree_details, q, oh, auto_repair)) | ... | ... |
libqpdf/QPDFNumberTreeObjectHelper.cc
| ... | ... | @@ -35,6 +35,13 @@ namespace |
| 35 | 35 | |
| 36 | 36 | static NumberTreeDetails number_tree_details; |
| 37 | 37 | |
| 38 | +QPDFNumberTreeObjectHelper::~QPDFNumberTreeObjectHelper() | |
| 39 | +{ | |
| 40 | + // Must be explicit and not inline -- see QPDF_DLL_CLASS in | |
| 41 | + // README-maintainer. For this specific class, see github issue | |
| 42 | + // #745. | |
| 43 | +} | |
| 44 | + | |
| 38 | 45 | QPDFNumberTreeObjectHelper::Members::Members( |
| 39 | 46 | QPDFObjectHandle& oh, QPDF& q, bool auto_repair) : |
| 40 | 47 | impl(std::make_shared<NNTreeImpl>(number_tree_details, q, oh, auto_repair)) | ... | ... |