diff options
author | Marc Mutz <marc.mutz@qt.io> | 2023-06-23 17:11:35 +0200 |
---|---|---|
committer | Marc Mutz <marc.mutz@qt.io> | 2023-06-25 15:28:23 +0000 |
commit | 3f2183ce2c41c5a998fcc1f83ca5ad4adc82b795 (patch) | |
tree | 68d4c39bf3dab05ffc221aeb9c16030d9521dfe0 /src/qml/qml/qqmlproperty_p.h | |
parent | f8c9fd6bfa5e6de4ac5d0176ebbc0292dbd031a2 (diff) |
QQmlRefCount: de-virtualize dtor
Now that QQmlRefCounted ensures no-one uses ~QQmlRefCount() directly
anymore, we can make it non-virtual, shrinking the
sizeof(QQmlRefCount) from 8/16 to 4/4 bytes (32/64 bit platforms).
This requires moving the release() function from QQmlRefCount down
into QQmlRefCounted<T>, and static_cast'ing *this to T before calling
delete.
We need to be careful, of course, that no derived class relied on the
implied virtualness of ~QQmlRefCount() making their dtors virtual, so
require that all classes that use QQmlRefCounted are either final or
have a virtual destructor.
Update the toolsupport test and the TypeInformationVersion, as
sizeof(QQmlRefCount) was one the items checked.
Fixes: QTBUG-114817
Change-Id: I69afd36ec5b63313842c1438e0244503603ed96f
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
Diffstat (limited to 'src/qml/qml/qqmlproperty_p.h')
-rw-r--r-- | src/qml/qml/qqmlproperty_p.h | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/qml/qml/qqmlproperty_p.h b/src/qml/qml/qqmlproperty_p.h index 2ba8304f34..da1b7693e3 100644 --- a/src/qml/qml/qqmlproperty_p.h +++ b/src/qml/qml/qqmlproperty_p.h @@ -35,7 +35,7 @@ class QQmlMetaObject; class QQmlAbstractBinding; class QQmlBoundSignalExpression; -class Q_QML_PRIVATE_EXPORT QQmlPropertyPrivate : public QQmlRefCounted<QQmlPropertyPrivate> +class Q_QML_PRIVATE_EXPORT QQmlPropertyPrivate final : public QQmlRefCounted<QQmlPropertyPrivate> { public: enum class InitFlag { |