aboutsummaryrefslogtreecommitdiffstats
path: root/src/imports/statemachine/signaltransition.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/imports/statemachine/signaltransition.cpp')
-rw-r--r--src/imports/statemachine/signaltransition.cpp9
1 files changed, 5 insertions, 4 deletions
diff --git a/src/imports/statemachine/signaltransition.cpp b/src/imports/statemachine/signaltransition.cpp
index 69edaa4e48..51b2501a7b 100644
--- a/src/imports/statemachine/signaltransition.cpp
+++ b/src/imports/statemachine/signaltransition.cpp
@@ -106,15 +106,16 @@ void SignalTransition::setSignal(const QJSValue &signal)
if (m_signal.strictlyEquals(signal))
return;
- m_signal = signal;
-
QV4::ExecutionEngine *jsEngine = QQmlEngine::contextForObject(this)->engine()->handle();
QV4::Scope scope(jsEngine);
QObject *sender;
QMetaMethod signalMethod;
- QV4::ScopedValue value(scope, QJSValuePrivate::convertedToValue(jsEngine, m_signal));
+ m_signal = signal;
+ QJSValuePrivate::manageStringOnV4Heap(jsEngine, &m_signal);
+
+ QV4::ScopedValue value(scope, QJSValuePrivate::asReturnedValue(&m_signal));
// Did we get the "slot" that can be used to invoke the signal?
if (QV4::QObjectMethod *signalSlot = value->as<QV4::QObjectMethod>()) {
@@ -170,7 +171,7 @@ 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));
+ QV4::Scoped<QV4::QObjectMethod> qobjectSignal(scope, QJSValuePrivate::asReturnedValue(&m_signal));
Q_ASSERT(qobjectSignal);
QMetaMethod metaMethod = target->metaObject()->method(qobjectSignal->methodIndex());
int signalIndex = QMetaObjectPrivate::signalIndex(metaMethod);