diff options
author | Marc Mutz <marc.mutz@qt.io> | 2022-05-09 16:27:45 +0200 |
---|---|---|
committer | Marc Mutz <marc.mutz@qt.io> | 2022-05-10 20:08:23 +0200 |
commit | 24d521d0c568a45733d81ca1857d45a40b58afb2 (patch) | |
tree | 428d96dc55482a1dc4bee12280e39dd3eb6154e9 /src/qml/debugger | |
parent | 872d407bd3cef49d56f6a6dd9698bc3214d811b2 (diff) |
QQmlDebugService interfaces: de-inline dtors
Destructors of polymorphic classes should be defined out-of-line, to
pin the vtable and type_info to a single TU. Failure to do so may
result in duplicated vtables and false-negtive dynamic_casts.
Task-number: QTBUG-45582
Change-Id: Id7a1f17b5a50482c44fc7533e37014fa5fc60f0f
Reviewed-by: MÃ¥rten Nordheim <marten.nordheim@qt.io>
Diffstat (limited to 'src/qml/debugger')
-rw-r--r-- | src/qml/debugger/qqmldebugserviceinterfaces.cpp | 20 | ||||
-rw-r--r-- | src/qml/debugger/qqmldebugserviceinterfaces_p.h | 16 |
2 files changed, 36 insertions, 0 deletions
diff --git a/src/qml/debugger/qqmldebugserviceinterfaces.cpp b/src/qml/debugger/qqmldebugserviceinterfaces.cpp index 39de9e1b06..da67bb3af2 100644 --- a/src/qml/debugger/qqmldebugserviceinterfaces.cpp +++ b/src/qml/debugger/qqmldebugserviceinterfaces.cpp @@ -51,6 +51,22 @@ const QString QQmlNativeDebugService::s_key = QStringLiteral("NativeQmlDebugger" #if QT_CONFIG(translation) const QString QQmlDebugTranslationService::s_key = QStringLiteral("DebugTranslation"); #endif + +QV4DebugService::~QV4DebugService() + = default; +QQmlEngineDebugService::~QQmlEngineDebugService() + = default; +QQmlInspectorService::~QQmlInspectorService() + = default; +QQmlProfilerService::~QQmlProfilerService() + = default; +QDebugMessageService::~QDebugMessageService() + = default; +QQmlEngineControlService::~QQmlEngineControlService() + = default; +QQmlNativeDebugService::~QQmlNativeDebugService() + = default; + static QQmlDebugStatesDelegate *(*statesDelegateFactory)() = nullptr; void QQmlEngineDebugService::setStatesDelegateFactory(QQmlDebugStatesDelegate *(*factory)()) { @@ -62,6 +78,10 @@ QQmlDebugStatesDelegate *QQmlEngineDebugService::createStatesDelegate() return statesDelegateFactory ? statesDelegateFactory() : nullptr; } +#if QT_CONFIG(translation) +QQmlDebugTranslationService::~QQmlDebugTranslationService() + = default; +#endif QT_END_NAMESPACE diff --git a/src/qml/debugger/qqmldebugserviceinterfaces_p.h b/src/qml/debugger/qqmldebugserviceinterfaces_p.h index d01e472edb..39c17b4ea6 100644 --- a/src/qml/debugger/qqmldebugserviceinterfaces_p.h +++ b/src/qml/debugger/qqmldebugserviceinterfaces_p.h @@ -117,6 +117,8 @@ class Q_QML_PRIVATE_EXPORT QV4DebugService : public QQmlDebugService { Q_OBJECT public: + ~QV4DebugService() override; + static const QString s_key; virtual void signalEmitted(const QString &signal) = 0; @@ -133,6 +135,8 @@ class Q_QML_PRIVATE_EXPORT QQmlProfilerService : public QQmlDebugService { Q_OBJECT public: + ~QQmlProfilerService() override; + static const QString s_key; virtual void addGlobalProfiler(QQmlAbstractProfilerAdapter *profiler) = 0; @@ -155,6 +159,8 @@ class Q_QML_PRIVATE_EXPORT QQmlEngineDebugService : public QQmlDebugService { Q_OBJECT public: + ~QQmlEngineDebugService() override; + static const QString s_key; virtual void objectCreated(QJSEngine *engine, QObject *object) = 0; @@ -183,6 +189,8 @@ class Q_QML_PRIVATE_EXPORT QQmlDebugTranslationService : public QQmlDebugService { Q_OBJECT public: + ~QQmlDebugTranslationService() override; + static const QString s_key; virtual void foundTranslationBinding(const TranslationBindingInformation &translationBindingInformation) = 0; @@ -199,6 +207,8 @@ class Q_QML_PRIVATE_EXPORT QQmlInspectorService : public QQmlDebugService { Q_OBJECT public: + ~QQmlInspectorService() override; + static const QString s_key; virtual void addWindow(QQuickWindow *) = 0; @@ -216,6 +226,8 @@ class Q_QML_PRIVATE_EXPORT QDebugMessageService : public QQmlDebugService { Q_OBJECT public: + ~QDebugMessageService() override; + static const QString s_key; virtual void synchronizeTime(const QElapsedTimer &otherTimer) = 0; @@ -231,6 +243,8 @@ class Q_QML_PRIVATE_EXPORT QQmlEngineControlService : public QQmlDebugService { Q_OBJECT public: + ~QQmlEngineControlService() override; + static const QString s_key; protected: @@ -245,6 +259,8 @@ class Q_QML_PRIVATE_EXPORT QQmlNativeDebugService : public QQmlDebugService { Q_OBJECT public: + ~QQmlNativeDebugService() override; + static const QString s_key; protected: |