aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/imports/statemachine/signaltransition.cpp13
1 files changed, 8 insertions, 5 deletions
diff --git a/src/imports/statemachine/signaltransition.cpp b/src/imports/statemachine/signaltransition.cpp
index 693969e8b5..c600081820 100644
--- a/src/imports/statemachine/signaltransition.cpp
+++ b/src/imports/statemachine/signaltransition.cpp
@@ -175,12 +175,15 @@ void SignalTransition::connectTriggered()
int signalIndex = QMetaObjectPrivate::signalIndex(metaMethod);
auto f = m_compilationUnit->runtimeFunctions[binding->value.compiledScriptIndex];
- QQmlBoundSignalExpression *expression =
- ctxtdata ? new QQmlBoundSignalExpression(target, signalIndex, ctxtdata, this, f)
- : nullptr;
- if (expression)
+ if (ctxtdata) {
+ QQmlRefPointer<QQmlBoundSignalExpression> expression(
+ new QQmlBoundSignalExpression(target, signalIndex, ctxtdata, this, f),
+ QQmlRefPointer<QQmlBoundSignalExpression>::Adopt);
expression->setNotifyOnValueChanged(false);
- m_signalExpression = expression;
+ m_signalExpression = expression;
+ } else {
+ m_signalExpression.adopt(nullptr);
+ }
}
void SignalTransitionParser::verifyBindings(const QQmlRefPointer<QV4::ExecutableCompilationUnit> &compilationUnit, const QList<const QV4::CompiledData::Binding *> &props)