aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJay Berkenbilt <ejb@ql.org>2022-10-06 14:04:45 +0200
committerJay Berkenbilt <ejb@ql.org>2022-10-06 14:40:08 +0200
commitdb6598b449f4edbb69a581ecc8bc6791e24ad3ea (patch)
tree4d1142206b26fac15bef96f8755f960db7aa81ca
parent06c6f9a971be5239ebfbac6aaa757a86085c1598 (diff)
downloadqpdf-db6598b449f4edbb69a581ecc8bc6791e24ad3ea.tar.zst
Attempt to test for QPDFNameTreeObjectHelper's vtable
It has disappeared from the DLL on Windows a few times.
-rw-r--r--qpdf/qtest/qpdf/exceptions.out1
-rw-r--r--qpdf/test_driver.cc25
2 files changed, 26 insertions, 0 deletions
diff --git a/qpdf/qtest/qpdf/exceptions.out b/qpdf/qtest/qpdf/exceptions.out
index ab69668e..5895f22f 100644
--- a/qpdf/qtest/qpdf/exceptions.out
+++ b/qpdf/qtest/qpdf/exceptions.out
@@ -2,4 +2,5 @@ Caught QPDFExc as expected
Caught QPDFSystemError as expected
Caught logic_error as expected
Caught runtime_error as expected
+~ExtendNameTree called
test 61 done
diff --git a/qpdf/test_driver.cc b/qpdf/test_driver.cc
index e174aa28..21fc0150 100644
--- a/qpdf/test_driver.cc
+++ b/qpdf/test_driver.cc
@@ -47,6 +47,24 @@ usage()
exit(2);
}
+// Derive from QPDFNumberTreeObjectHelper -- See test 61
+class ExtendNameTree: public QPDFNameTreeObjectHelper
+{
+ public:
+ ExtendNameTree(QPDFObjectHandle o, QPDF& q);
+ virtual ~ExtendNameTree();
+};
+
+ExtendNameTree::ExtendNameTree(QPDFObjectHandle o, QPDF& q) :
+ QPDFNameTreeObjectHelper(o, q)
+{
+}
+
+ExtendNameTree::~ExtendNameTree()
+{
+ std::cout << "~ExtendNameTree called" << std::endl;
+}
+
class Provider: public QPDFObjectHandle::StreamDataProvider
{
public:
@@ -2281,6 +2299,13 @@ test_61(QPDF& pdf, char const* arg2)
Pl_Discard pd;
Pipeline* p = &pd;
assert(dynamic_cast<Pl_Discard*>(p) != nullptr);
+
+ // For some reason, QPDFNameTreeObjectHelper's vtable seems to
+ // like to not make it into the shared library with mingw. Try to
+ // make sure this is really fixed.
+ QPDFNameTreeObjectHelper* n =
+ new ExtendNameTree(QPDFObjectHandle::newNull(), pdf);
+ delete n;
}
static void