diff options
author | Ulf Hermann <ulf.hermann@qt.io> | 2017-02-28 15:55:39 +0100 |
---|---|---|
committer | Ulf Hermann <ulf.hermann@qt.io> | 2017-02-28 16:33:00 +0000 |
commit | 5a9fd4f49ec48c91c70699fc40af8f843c51b4ab (patch) | |
tree | 69b6e0bb3376d3abb38407d40d8f8e9936344c49 /src/plugins | |
parent | 8c864e52369ee4d55a1d9345215c8153144b5939 (diff) |
V4 Debugger: Don't crash when stepping to the end of a script
The last instruction is a return, which leads to an invalid context.
Don't try to save that context, but rather clear the current one.
Change-Id: I468b7420c4ca0842209c9b00478f99cc4dc69726
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Diffstat (limited to 'src/plugins')
-rw-r--r-- | src/plugins/qmltooling/qmldbg_debugger/qv4debugger.cpp | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/plugins/qmltooling/qmldbg_debugger/qv4debugger.cpp b/src/plugins/qmltooling/qmldbg_debugger/qv4debugger.cpp index 5cc2043cb1..75cbc9eba1 100644 --- a/src/plugins/qmltooling/qmldbg_debugger/qv4debugger.cpp +++ b/src/plugins/qmltooling/qmldbg_debugger/qv4debugger.cpp @@ -230,7 +230,12 @@ void QV4Debugger::leavingFunction(const QV4::ReturnedValue &retVal) QMutexLocker locker(&m_lock); if (m_stepping != NotStepping && m_currentContext.asManaged()->d() == m_engine->current) { - m_currentContext.set(m_engine, *m_engine->parentContext(m_engine->currentContext)); + if (QV4::ExecutionContext *parentContext + = m_engine->parentContext(m_engine->currentContext)) { + m_currentContext.set(m_engine, *parentContext); + } else { + m_currentContext.clear(); + } m_stepping = StepOver; m_returnedValue.set(m_engine, retVal); } |