diff options
author | Ulf Hermann <ulf.hermann@qt.io> | 2023-01-26 10:58:32 +0100 |
---|---|---|
committer | Ulf Hermann <ulf.hermann@qt.io> | 2023-01-26 15:25:11 +0100 |
commit | 6dc7fa90efa592dc555008b0e8d666c72801f31d (patch) | |
tree | 9effccbd05d6575fcba56455c4c6a63f9a77f8d3 | |
parent | 778659c100996947e70ffd7a67ec2bcf748c5082 (diff) |
StateMachine: Don't crash if no signal is passed to SignalTransition
Rather, just reset the transition. Adapted from commit
af4c8da54bbf057f3a8d7cf8a8e4146d35aad7f6 in qtscxml.
Fixes: QTBUG-110286
Change-Id: I49a7588f771c4caa73e85334487d9d9c0260a7ce
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
-rw-r--r-- | src/imports/statemachine/signaltransition.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/imports/statemachine/signaltransition.cpp b/src/imports/statemachine/signaltransition.cpp index 99a9ebba95..c571306658 100644 --- a/src/imports/statemachine/signaltransition.cpp +++ b/src/imports/statemachine/signaltransition.cpp @@ -171,7 +171,11 @@ void SignalTransition::connectTriggered() QV4::ExecutionEngine *jsEngine = QQmlEngine::contextForObject(this)->engine()->handle(); QV4::Scope scope(jsEngine); QV4::Scoped<QV4::QObjectMethod> qobjectSignal(scope, QJSValuePrivate::convertedToValue(jsEngine, m_signal)); - Q_ASSERT(qobjectSignal); + if (!qobjectSignal) { + m_signalExpression.take(nullptr); + return; + } + QMetaMethod metaMethod = target->metaObject()->method(qobjectSignal->methodIndex()); int signalIndex = QMetaObjectPrivate::signalIndex(metaMethod); |