aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarc Mutz <marc.mutz@kdab.com>2016-09-16 13:10:35 +0200
committerMarc Mutz <marc.mutz@kdab.com>2016-09-17 06:48:00 +0000
commitbce02fde5844411c11d040f8e515cf7c0bf79059 (patch)
treec7387baa02a42304a61fce701c032eb8e300e612
parentdb7b59dc12209b8e59ce21cb5ca58d1bca56776d (diff)
QAbstractZonedFeaturePrivate: Fix duplicated vtable/type_info
QAbstractZonedFeaturePrivate was exported, but didn't have its dtor out-of-line, meaning every executable needing it would get its own copy of the vtable (and, thus, type_info object). Fix by making the dtor out-of-line. Fixes tons of UBSan errors of the form: runtime error: member access within address ... which does not point to an object of type 'QIviAbstractFeaturePrivate' ...: note: object is of type 'QIviWindowControlPrivate' (where QIviWindowControl actually *does* inherit QIviAbstractFeature (via QIviAbstractZonedFeature)), e.g. in WindowControlTest. Change-Id: I9f08c1e4c5377a2ee342d7e4f4e5f6433843d6b5 Reviewed-by: Dominik Holland <dominik.holland@pelagicore.com>
-rw-r--r--src/ivicore/qiviabstractzonedfeature.cpp4
-rw-r--r--src/ivicore/qiviabstractzonedfeature_p.h1
2 files changed, 5 insertions, 0 deletions
diff --git a/src/ivicore/qiviabstractzonedfeature.cpp b/src/ivicore/qiviabstractzonedfeature.cpp
index 93054c5..bc98896 100644
--- a/src/ivicore/qiviabstractzonedfeature.cpp
+++ b/src/ivicore/qiviabstractzonedfeature.cpp
@@ -51,6 +51,10 @@ QIviAbstractZonedFeaturePrivate::QIviAbstractZonedFeaturePrivate(const QString &
, m_zone(zone)
{}
+QIviAbstractZonedFeaturePrivate::~QIviAbstractZonedFeaturePrivate()
+{
+}
+
/*!
\class QIviAbstractZonedFeature
\inmodule QtIviCore
diff --git a/src/ivicore/qiviabstractzonedfeature_p.h b/src/ivicore/qiviabstractzonedfeature_p.h
index eb756dd..d2d970c 100644
--- a/src/ivicore/qiviabstractzonedfeature_p.h
+++ b/src/ivicore/qiviabstractzonedfeature_p.h
@@ -62,6 +62,7 @@ class Q_QTIVICORE_EXPORT QIviAbstractZonedFeaturePrivate : public QIviAbstractFe
{
public:
QIviAbstractZonedFeaturePrivate(const QString &interface, const QString &zone, QIviAbstractFeature *parent);
+ ~QIviAbstractZonedFeaturePrivate();
QString m_zone;
QList<QIviAbstractZonedFeature*> m_zoneFeatures;