aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/jsruntime/qv4engine.cpp
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@qt.io>2017-08-04 10:03:03 +0200
committerLars Knoll <lars.knoll@qt.io>2017-08-04 08:59:54 +0000
commit7835060518a2280bda4ca28684b78a1481677158 (patch)
treebba6908444148a724c0f7e8f724edc204ccf7322 /src/qml/jsruntime/qv4engine.cpp
parentc0f961cd6b82a523e277f6d8778a20508b15697d (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.cpp21
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);
}