diff options
author | Marc Mutz <marc.mutz@kdab.com> | 2016-09-16 13:10:35 +0200 |
---|---|---|
committer | Marc Mutz <marc.mutz@kdab.com> | 2016-09-17 06:48:00 +0000 |
commit | bce02fde5844411c11d040f8e515cf7c0bf79059 (patch) | |
tree | c7387baa02a42304a61fce701c032eb8e300e612 | |
parent | db7b59dc12209b8e59ce21cb5ca58d1bca56776d (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.cpp | 4 | ||||
-rw-r--r-- | src/ivicore/qiviabstractzonedfeature_p.h | 1 |
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; |