aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/debugger
diff options
context:
space:
mode:
authorMarc Mutz <marc.mutz@qt.io>2022-05-09 16:27:45 +0200
committerMarc Mutz <marc.mutz@qt.io>2022-05-10 20:08:23 +0200
commit24d521d0c568a45733d81ca1857d45a40b58afb2 (patch)
tree428d96dc55482a1dc4bee12280e39dd3eb6154e9 /src/qml/debugger
parent872d407bd3cef49d56f6a6dd9698bc3214d811b2 (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.cpp20
-rw-r--r--src/qml/debugger/qqmldebugserviceinterfaces_p.h16
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: