Commit 32e30a3af2f3198e1522a42bdde8faa1cd1a88df

Authored by Jay Berkenbilt
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.
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))
... ...