diff options
author | Ulf Hermann <ulf.hermann@qt.io> | 2021-06-08 17:27:23 +0200 |
---|---|---|
committer | Ulf Hermann <ulf.hermann@qt.io> | 2021-06-08 17:40:40 +0200 |
commit | ef7544bb5c6156462d169954c55afd38141e5a74 (patch) | |
tree | c88eeace150548cce16a1c46e9aa19a77bdbc671 /src/qml/qml/qqmlboundsignal.cpp | |
parent | 95b448bf89575dfd79ca071ebfeab8960eff6864 (diff) |
Allow property observers on readonly properties
This makes it necessary to tolerate evaluate() calls after the engine is
gone. With non-QProperty properties this can't happen as the engine
controls the observers.
Change-Id: Ia700a10ad847b8a174b2346a4ad7a4de7afb0c83
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Diffstat (limited to 'src/qml/qml/qqmlboundsignal.cpp')
-rw-r--r-- | src/qml/qml/qqmlboundsignal.cpp | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/qml/qml/qqmlboundsignal.cpp b/src/qml/qml/qqmlboundsignal.cpp index 0dfbf1faee..665d4e6c75 100644 --- a/src/qml/qml/qqmlboundsignal.cpp +++ b/src/qml/qml/qqmlboundsignal.cpp @@ -175,12 +175,16 @@ QString QQmlBoundSignalExpression::expression() const // Changes made here may need to be made there and vice versa. void QQmlBoundSignalExpression::evaluate(void **a) { - Q_ASSERT (engine()); - if (!expressionFunctionValid()) return; QQmlEngine *qmlengine = engine(); + + // If there is no engine, we have no way to evaluate anything. + // This can happen on destruction. + if (!qmlengine) + return; + QQmlEnginePrivate *ep = QQmlEnginePrivate::get(qmlengine); QV4::ExecutionEngine *v4 = qmlengine->handle(); QV4::Scope scope(v4); |