diff options
author | Jay Berkenbilt <ejb@ql.org> | 2022-10-06 14:04:45 +0200 |
---|---|---|
committer | Jay Berkenbilt <ejb@ql.org> | 2022-10-06 14:40:08 +0200 |
commit | db6598b449f4edbb69a581ecc8bc6791e24ad3ea (patch) | |
tree | 4d1142206b26fac15bef96f8755f960db7aa81ca | |
parent | 06c6f9a971be5239ebfbac6aaa757a86085c1598 (diff) | |
download | qpdf-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.out | 1 | ||||
-rw-r--r-- | qpdf/test_driver.cc | 25 |
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 |