From 6de0287d7c3aa4251fe6eb4f970d73ce11cf07fc Mon Sep 17 00:00:00 2001 From: Ulf Hermann Date: Wed, 24 Jun 2020 10:57:24 +0200 Subject: Don't leak QQmlBoundSignalExpressions in signaltransition.cpp We need to adopt them, not addref the newly created object. Fixes: QTBUG-83214 Pick-to: 5.15 Change-Id: Ic8660e65d4b7c7698657f6b2806b5478f7f15ea1 Reviewed-by: Fabian Kosmale --- src/imports/statemachine/signaltransition.cpp | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) (limited to 'src/imports') 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 expression( + new QQmlBoundSignalExpression(target, signalIndex, ctxtdata, this, f), + QQmlRefPointer::Adopt); expression->setNotifyOnValueChanged(false); - m_signalExpression = expression; + m_signalExpression = expression; + } else { + m_signalExpression.adopt(nullptr); + } } void SignalTransitionParser::verifyBindings(const QQmlRefPointer &compilationUnit, const QList &props) -- cgit v1.2.3