diff options
author | Ulf Hermann <ulf.hermann@qt.io> | 2020-02-13 19:03:40 +0100 |
---|---|---|
committer | Ulf Hermann <ulf.hermann@qt.io> | 2020-02-14 21:00:40 +0100 |
commit | 751e92d50a23d1273af42a7a7836bb2eb336eced (patch) | |
tree | 83e0b647ae1c2dc8345df8a989cc24061cdd0a80 /src/plugins | |
parent | dd6ffbec2496920b1bfe4f29cca1eba82e959869 (diff) |
V4 Debugger: Properly set up context object for expressions
We need to use the object in question as context object in order to
access its properties. Otherwise we can only access the context
properties and, incidentally, the root scope's properties. The latter is
why the test didn't fail.
Fixes: QTBUG-82150
Change-Id: I1f18f9e78dd61786310fd75e0695929522a4c90c
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Diffstat (limited to 'src/plugins')
-rw-r--r-- | src/plugins/qmltooling/qmldbg_debugger/qv4debugjob.cpp | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/src/plugins/qmltooling/qmldbg_debugger/qv4debugjob.cpp b/src/plugins/qmltooling/qmldbg_debugger/qv4debugjob.cpp index 61fea96e2f..333ce4b26f 100644 --- a/src/plugins/qmltooling/qmldbg_debugger/qv4debugjob.cpp +++ b/src/plugins/qmltooling/qmldbg_debugger/qv4debugjob.cpp @@ -66,7 +66,6 @@ void JavaScriptJob::run() QV4::ScopedContext ctx(scope, engine->currentStackFrame ? engine->currentContext() : engine->scriptContext()); - QObject scopeObject; QV4::CppStackFrame *frame = engine->currentStackFrame; @@ -76,9 +75,10 @@ void JavaScriptJob::run() ctx = static_cast<QV4::ExecutionContext *>(&frame->jsFrame->context); if (context >= 0) { - QQmlContext *extraContext = qmlContext(QQmlDebugService::objectForId(context)); + QObject *forId = QQmlDebugService::objectForId(context); + QQmlContext *extraContext = qmlContext(forId); if (extraContext) - ctx = QV4::QmlContext::create(ctx, QQmlContextData::get(extraContext), &scopeObject); + ctx = QV4::QmlContext::create(ctx, QQmlContextData::get(extraContext), forId); } else if (frameNr < 0) { // Use QML context if available QQmlEngine *qmlEngine = engine->qmlEngine(); if (qmlEngine) { @@ -99,7 +99,7 @@ void JavaScriptJob::run() } } if (!engine->qmlContext()) - ctx = QV4::QmlContext::create(ctx, QQmlContextData::get(qmlRootContext), &scopeObject); + ctx = QV4::QmlContext::create(ctx, QQmlContextData::get(qmlRootContext), nullptr); } } |