aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorUlf Hermann <ulf.hermann@qt.io>2022-11-18 18:14:19 +0100
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2022-11-23 08:17:47 +0000
commitf284ba291766ae3aa6d52dc7402c74b6a1674ab4 (patch)
tree7ebfc0bd77b17dc6709c1a753ad98ff3adacec82 /src
parent5065c6de5af7687b6f825f83f37ecc9dffcf87cc (diff)
Don't crash on QQmlGadgetPtrWrapper instances in debug service
They have the confusing property of being a QObject but having a QMetaObject that says it's a Q_GADGET. Fixes: QTBUG-108646 Change-Id: I6df34c2004918cd89691f4b5eb4b6267dabcd7ff Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit deda185ba95ffb99b1500364e2eba774e9dbc1e6) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
Diffstat (limited to 'src')
-rw-r--r--src/plugins/qmltooling/qmldbg_debugger/qqmlenginedebugservice.cpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/plugins/qmltooling/qmldbg_debugger/qqmlenginedebugservice.cpp b/src/plugins/qmltooling/qmldbg_debugger/qqmlenginedebugservice.cpp
index 1fcc1e7772..578b07cb22 100644
--- a/src/plugins/qmltooling/qmldbg_debugger/qqmlenginedebugservice.cpp
+++ b/src/plugins/qmltooling/qmldbg_debugger/qqmlenginedebugservice.cpp
@@ -147,7 +147,8 @@ QQmlEngineDebugServiceImpl::propertyData(QObject *obj, int propIdx)
{
QQmlObjectProperty rv;
- QMetaProperty prop = obj->metaObject()->property(propIdx);
+ const QMetaObject *metaObject = obj->metaObject();
+ QMetaProperty prop = metaObject->property(propIdx);
rv.type = QQmlObjectProperty::Unknown;
rv.valueTypeName = QString::fromUtf8(prop.typeName());
@@ -158,7 +159,10 @@ QQmlEngineDebugServiceImpl::propertyData(QObject *obj, int propIdx)
if (binding)
rv.binding = binding->expression();
- rv.value = valueContents(prop.read(obj));
+ if (metaObject->metaType().flags().testFlag(QMetaType::IsGadget))
+ rv.value = valueContents(static_cast<QQmlGadgetPtrWrapper *>(obj)->readOnGadget(prop));
+ else
+ rv.value = valueContents(prop.read(obj));
if (prop.metaType().flags().testFlag(QMetaType::PointerToQObject)) {
rv.type = QQmlObjectProperty::Object;