From d91d3536eb82075aec25f3772c4209e15b7b3060 Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Thu, 7 Jul 2016 10:57:03 +0200 Subject: Unbreak ubsan developer-build GCC's undefined-behavior sanitizer checks that the declared type of the object is a base class of the dynamic type of the object on each access to a member of a class type. It therefore requires the typeinfo for these types, which for polymorphic types is emitted in the TU where the vtable is emitted, too. QtPatternist::AtomicValue is a polymorphic non- exported class, so this failed at link-time. Ditto for the other cases. Fix by autotest-exporting the classes. Also, where applicable, de-inline the dtors, so the vtable (and typeinfo) are pinned to one TU. Change-Id: I5c47be779a3833433a7108a79a57d61a93ab5494 Reviewed-by: Thiago Macieira --- src/xmlpatterns/expr/qsinglecontainer_p.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'src/xmlpatterns/expr/qsinglecontainer_p.h') diff --git a/src/xmlpatterns/expr/qsinglecontainer_p.h b/src/xmlpatterns/expr/qsinglecontainer_p.h index baf061c..3dbfb80 100644 --- a/src/xmlpatterns/expr/qsinglecontainer_p.h +++ b/src/xmlpatterns/expr/qsinglecontainer_p.h @@ -56,9 +56,11 @@ namespace QPatternist * @author Frans Englich * @ingroup Patternist_expressions */ - class SingleContainer : public Expression + class Q_AUTOTEST_EXPORT SingleContainer : public Expression { public: + ~SingleContainer(); + virtual Expression::List operands() const; virtual void setOperands(const Expression::List &operands); -- cgit v1.2.1