From 87409ce0007e92d43f8e502f44528858c84b85d4 Mon Sep 17 00:00:00 2001 From: Fabian Kosmale Date: Fri, 4 Dec 2020 09:11:50 +0100 Subject: QBindable: Disallow mutation if read-only If a QBindable is created from a computed property, it is not possible to actually set a value or a binding. If we try to do it anyway, we'd get a crash. Thus we now check whether the function pointer is null before invoking it. Task-number: QTBUG-87153 Change-Id: I5bedb9080ccf79d9b8166b80d5733d095ed76f8d Reviewed-by: Lars Knoll (cherry picked from commit e236faa75f446aa3378fb013cce6598c9e076ccb) Reviewed-by: Qt Cherry-pick Bot --- src/corelib/kernel/qproperty.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/corelib/kernel') diff --git a/src/corelib/kernel/qproperty.h b/src/corelib/kernel/qproperty.h index 946014dc6d..a533f424e8 100644 --- a/src/corelib/kernel/qproperty.h +++ b/src/corelib/kernel/qproperty.h @@ -630,7 +630,7 @@ public: QPropertyBinding setBinding(const QPropertyBinding &binding) { Q_ASSERT(!iface || binding.isNull() || binding.valueMetaType() == iface->metaType()); - return iface ? static_cast &&>(iface->setBinding(data, binding)) : QPropertyBinding(); + return (iface && iface->setBinding) ? static_cast &&>(iface->setBinding(data, binding)) : QPropertyBinding(); } #ifndef Q_CLANG_QDOC template @@ -657,7 +657,7 @@ public: void setValue(const T &value) { - if (iface) + if (iface && iface->setter) iface->setter(data, &value); } }; -- cgit v1.2.3