diff options
author | Kent Hansen <khansen@trolltech.com> | 2009-08-20 13:55:13 (GMT) |
---|---|---|
committer | Kent Hansen <khansen@trolltech.com> | 2009-08-20 13:55:13 (GMT) |
commit | 6fec99fd1fc256437c5c651209084f479005a7a7 (patch) | |
tree | 91b2369cf4d8e0a5160b1b0ed87458627c8ab25a /src/script/api/qscriptengineagent.cpp | |
parent | 909512e0f0ab2a11d0c4ecdaef957ad7a5c58292 (diff) | |
download | Qt-6fec99fd1fc256437c5c651209084f479005a7a7.zip Qt-6fec99fd1fc256437c5c651209084f479005a7a7.tar.gz Qt-6fec99fd1fc256437c5c651209084f479005a7a7.tar.bz2 |
provide line number information for innermost call frame
For the innermost frame, we don't have a returnPC, so use the line
number that was last passed to the engine agent.
Diffstat (limited to 'src/script/api/qscriptengineagent.cpp')
-rw-r--r-- | src/script/api/qscriptengineagent.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/script/api/qscriptengineagent.cpp b/src/script/api/qscriptengineagent.cpp index ba8e5e9..6417ed8 100644 --- a/src/script/api/qscriptengineagent.cpp +++ b/src/script/api/qscriptengineagent.cpp @@ -163,9 +163,12 @@ void QScriptEngineAgentPrivate::exceptionCatch(const JSC::DebuggerCallFrame& fra void QScriptEngineAgentPrivate::atStatement(const JSC::DebuggerCallFrame& frame, intptr_t sourceID, int lineno, int column) { JSC::CallFrame *oldFrame = engine->currentFrame; + int oldAgentLineNumber = engine->agentLineNumber; engine->currentFrame = frame.callFrame(); + engine->agentLineNumber = lineno; q_ptr->positionChange(sourceID, lineno, column); engine->currentFrame = oldFrame; + engine->agentLineNumber = oldAgentLineNumber; } void QScriptEngineAgentPrivate::functionExit(const JSC::JSValue& returnValue, intptr_t sourceID) @@ -186,11 +189,14 @@ void QScriptEngineAgentPrivate::didReachBreakpoint(const JSC::DebuggerCallFrame& { if (q_ptr->supportsExtension(QScriptEngineAgent::DebuggerInvocationRequest)) { JSC::CallFrame *oldFrame = engine->currentFrame; + int oldAgentLineNumber = engine->agentLineNumber; engine->currentFrame = frame.callFrame(); + engine->agentLineNumber = lineno; QList<QVariant> args; args << qint64(sourceID) << lineno << column; q_ptr->extension(QScriptEngineAgent::DebuggerInvocationRequest, args); engine->currentFrame = oldFrame; + engine->agentLineNumber = oldAgentLineNumber; } }; |