src/script/api/qscriptengineagent.cpp
changeset 37 758a864f9613
parent 30 5dc02b23752f
--- a/src/script/api/qscriptengineagent.cpp	Fri Sep 17 08:34:18 2010 +0300
+++ b/src/script/api/qscriptengineagent.cpp	Mon Oct 04 01:19:32 2010 +0300
@@ -117,6 +117,8 @@
     if (engine->originalGlobalObject()->debugger())
         engine->originalGlobalObject()->setDebugger(0);
     JSC::Debugger::attach(engine->originalGlobalObject());
+    if (!QScriptEnginePrivate::get(engine)->isEvaluating())
+        JSC::Debugger::recompileAllJSFunctions(engine->globalData);
 }
 
 void QScriptEngineAgentPrivate::detach()
@@ -134,9 +136,12 @@
 void QScriptEngineAgentPrivate::exceptionThrow(const JSC::DebuggerCallFrame& frame, intptr_t sourceID, bool hasHandler)
 {
     JSC::CallFrame *oldFrame = engine->currentFrame;
+    int oldAgentLineNumber = engine->agentLineNumber;
     engine->currentFrame = frame.callFrame();
     QScriptValue value(engine->scriptValueFromJSCValue(frame.exception()));
+    engine->agentLineNumber = value.property(QLatin1String("lineNumber")).toInt32();
     q_ptr->exceptionThrow(sourceID, value, hasHandler);
+    engine->agentLineNumber = oldAgentLineNumber;
     engine->currentFrame = oldFrame;
     engine->setCurrentException(value);
 };
@@ -367,9 +372,8 @@
 /*!
   This function is called when the engine is about to execute a new
   statement in the script identified by \a scriptId.  The statement
-  begins on the line and column specified by \a lineNumber and \a
-  columnNumber.  This event is not generated for native Qt Script
-  functions.
+  begins on the line and column specified by \a lineNumber
+  This event is not generated for native Qt Script functions.
 
   Reimplement this function to handle this event. For example, a
   debugger implementation could reimplement this function to provide
@@ -378,6 +382,8 @@
 
   The default implementation does nothing.
 
+  \note \a columnNumber is undefined
+
   \sa scriptLoad(), functionEntry()
 */
 void QScriptEngineAgent::positionChange(qint64 scriptId,