aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJay Berkenbilt <ejb@ql.org>2022-08-07 15:09:04 +0200
committerJay Berkenbilt <ejb@ql.org>2022-08-07 15:21:01 +0200
commit32e30a3af2f3198e1522a42bdde8faa1cd1a88df (patch)
tree9a0953eca8a4af68a80327781c07d033346dbb0f
parentb90adb1c6ce922fe80d0e3287d76b181bffa4c44 (diff)
downloadqpdf-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.hh8
-rw-r--r--include/qpdf/QPDFNumberTreeObjectHelper.hh8
-rw-r--r--libqpdf/QPDFNameTreeObjectHelper.cc7
-rw-r--r--libqpdf/QPDFNumberTreeObjectHelper.cc7
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))