diff options
author | Lars Knoll <lars.knoll@qt.io> | 2017-08-04 10:03:03 +0200 |
---|---|---|
committer | Lars Knoll <lars.knoll@qt.io> | 2017-08-04 08:59:54 +0000 |
commit | 7835060518a2280bda4ca28684b78a1481677158 (patch) | |
tree | bba6908444148a724c0f7e8f724edc204ccf7322 /src/qml/jsruntime/qv4engine.cpp | |
parent | c0f961cd6b82a523e277f6d8778a20508b15697d (diff) |
Fix frame handling
Fix some regressions introduced by change
1ae1eaf59e0475a2dc9c5e22e53e9be19d0f2feb.
Change-Id: I24c1db78634e3beb1ab090325b60e70f788f92a7
Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
Diffstat (limited to 'src/qml/jsruntime/qv4engine.cpp')
-rw-r--r-- | src/qml/jsruntime/qv4engine.cpp | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/src/qml/jsruntime/qv4engine.cpp b/src/qml/jsruntime/qv4engine.cpp index 167e38f04a..8d0f401f58 100644 --- a/src/qml/jsruntime/qv4engine.cpp +++ b/src/qml/jsruntime/qv4engine.cpp @@ -804,26 +804,29 @@ QQmlContextData *ExecutionEngine::callingQmlContext() const return ctx->qml()->context->contextData(); } -QString StackFrame::source() const +QString EngineBase::StackFrame::source() const { return v4Function->sourceFile(); } -QString StackFrame::function() const +QString EngineBase::StackFrame::function() const { return v4Function->name()->toQString(); } -QVector<StackFrame> ExecutionEngine::stackTrace(int frameLimit) const +StackTrace ExecutionEngine::stackTrace(int frameLimit) const { Scope scope(const_cast<ExecutionEngine *>(this)); ScopedString name(scope); - QVector<StackFrame> stack; + StackTrace stack; StackFrame *f = currentStackFrame; while (f && frameLimit) { - StackFrame frame = *f; - frame.parent = 0; + QV4::StackFrame frame; + frame.source = f->source(); + frame.function = f->function(); + frame.line = f->line; + frame.column = f->column; stack.append(frame); --frameLimit; f = f->parent; @@ -849,9 +852,9 @@ static inline char *v4StackTrace(const ExecutionContext *context) for (int i = 0; i < stackTrace.size(); ++i) { if (i) str << ','; - const QUrl url(stackTrace.at(i).source()); + const QUrl url(stackTrace.at(i).source); const QString fileName = url.isLocalFile() ? url.toLocalFile() : url.toString(); - str << "frame={level=\"" << i << "\",func=\"" << stackTrace.at(i).function() + str << "frame={level=\"" << i << "\",func=\"" << stackTrace.at(i).function << "\",file=\"" << fileName << "\",fullname=\"" << fileName << "\",line=\"" << stackTrace.at(i).line << "\",language=\"js\"}"; } @@ -1066,7 +1069,7 @@ QQmlError ExecutionEngine::catchExceptionAsQmlError() QQmlError error; if (!trace.isEmpty()) { QV4::StackFrame frame = trace.constFirst(); - error.setUrl(QUrl(frame.source())); + error.setUrl(QUrl(frame.source)); error.setLine(frame.line); error.setColumn(frame.column); } |