diff options
author | Marc Mutz <marc.mutz@qt.io> | 2023-05-02 09:26:59 +0200 |
---|---|---|
committer | Marc Mutz <marc.mutz@qt.io> | 2023-05-02 14:51:01 +0200 |
commit | b6d04c8a823ab8486d72ca6dd72ab3007a6627a7 (patch) | |
tree | cfbf07a9df1c36df4b7acef4500d96654c71ad46 /src/corelib/kernel | |
parent | 426b5fbce437128a10055ebfdc4431e6a2ab312c (diff) | |
download | qtbase-b6d04c8a823ab8486d72ca6dd72ab3007a6627a7.tar.gz |
QMetaProperty: add writeOnGadget() overload taking rvalue QVariant
The writeOnGadget() function is implemented in terms of write() (UB,
btw, due to the cast to QObject*), which was recently overloaded for
rvalue QVariants.
Add a corresponding writeOnGadget() overload, too.
[ChangeLog][QtCore][QMetaProperty] Added writeOnGadget() overload
taking an rvalue QVariant.
Amends 968250ee1444d3eabf3d805053f46015bc7185c5.
Task-number: QTBUG-112762
Change-Id: I7fc686fcab293159f5a0d76dd6c8e23d5779c96c
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Diffstat (limited to 'src/corelib/kernel')
-rw-r--r-- | src/corelib/kernel/qmetaobject.cpp | 10 | ||||
-rw-r--r-- | src/corelib/kernel/qmetaobject.h | 1 |
2 files changed, 11 insertions, 0 deletions
diff --git a/src/corelib/kernel/qmetaobject.cpp b/src/corelib/kernel/qmetaobject.cpp index 5a75993ca3..ec3e6a1916 100644 --- a/src/corelib/kernel/qmetaobject.cpp +++ b/src/corelib/kernel/qmetaobject.cpp @@ -3807,6 +3807,16 @@ bool QMetaProperty::writeOnGadget(void *gadget, const QVariant &value) const } /*! + \overload + \since 6.6 +*/ +bool QMetaProperty::writeOnGadget(void *gadget, QVariant &&value) const +{ + Q_ASSERT(priv(mobj->d.data)->flags & PropertyAccessInStaticMetaCall && mobj->d.static_metacall); + return write(reinterpret_cast<QObject*>(gadget), std::move(value)); +} + +/*! \since 5.5 Resets the property for the given \a gadget with a reset method. diff --git a/src/corelib/kernel/qmetaobject.h b/src/corelib/kernel/qmetaobject.h index d9c0d78831..c51922e659 100644 --- a/src/corelib/kernel/qmetaobject.h +++ b/src/corelib/kernel/qmetaobject.h @@ -370,6 +370,7 @@ public: QVariant readOnGadget(const void *gadget) const; bool writeOnGadget(void *gadget, const QVariant &value) const; + bool writeOnGadget(void *gadget, QVariant &&value) const; bool resetOnGadget(void *gadget) const; bool hasStdCppSet() const; |