From db6598b449f4edbb69a581ecc8bc6791e24ad3ea Mon Sep 17 00:00:00 2001 From: Jay Berkenbilt Date: Thu, 6 Oct 2022 08:04:45 -0400 Subject: Attempt to test for QPDFNameTreeObjectHelper's vtable It has disappeared from the DLL on Windows a few times. --- qpdf/qtest/qpdf/exceptions.out | 1 + qpdf/test_driver.cc | 25 +++++++++++++++++++++++++ 2 files changed, 26 insertions(+) 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(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 -- cgit v1.2.3-70-g09d2