diff options
author | Ulf Hermann <ulf.hermann@qt.io> | 2023-01-25 13:24:18 +0100 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2023-01-25 16:22:57 +0000 |
commit | 380105538c3a9bc76dcbe6a5af26aebbb71a838f (patch) | |
tree | 98051ffc89f5ebf96861d47fb4b8aaea7be38bda | |
parent | ec2f9c6bcd28e84f82ad7de3ce89794febf61a60 (diff) |
StateMachine: Don't crash if no signal is passed to SignalTransition
Rather, just reset the transition.
Fixes: QTBUG-110286
Change-Id: Ic25a6c7b841a47b180e1a62c7bdbd2e388cdc293
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Juha Vuolle <juha.vuolle@qt.io>
(cherry picked from commit af4c8da54bbf057f3a8d7cf8a8e4146d35aad7f6)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-rw-r--r-- | src/statemachineqml/signaltransition.cpp | 6 | ||||
-rw-r--r-- | tests/auto/qml/qqmlstatemachine/data/signaltransition.qml | 4 |
2 files changed, 9 insertions, 1 deletions
diff --git a/src/statemachineqml/signaltransition.cpp b/src/statemachineqml/signaltransition.cpp index 9963d31..95b20f0 100644 --- a/src/statemachineqml/signaltransition.cpp +++ b/src/statemachineqml/signaltransition.cpp @@ -203,7 +203,11 @@ void SignalTransition::connectTriggered() QV4::Scope scope(jsEngine); QV4::Scoped<QV4::QObjectMethod> qobjectSignal( scope, QJSValuePrivate::asReturnedValue(&m_signal.value())); - Q_ASSERT(qobjectSignal); + if (!qobjectSignal) { + m_signalExpression.adopt(nullptr); + return; + } + QMetaMethod metaMethod = target->metaObject()->method(qobjectSignal->methodIndex()); int signalIndex = QMetaObjectPrivate::signalIndex(metaMethod); diff --git a/tests/auto/qml/qqmlstatemachine/data/signaltransition.qml b/tests/auto/qml/qqmlstatemachine/data/signaltransition.qml index 52c62a7..09f344a 100644 --- a/tests/auto/qml/qqmlstatemachine/data/signaltransition.qml +++ b/tests/auto/qml/qqmlstatemachine/data/signaltransition.qml @@ -48,4 +48,8 @@ Item { guard: 2 + 2 } + SignalTransition { + // Do not crash on SignalTransition without signal + onTriggered: () => {} + } } |