aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/jsruntime/qv4globalobject.cpp
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@qt.io>2017-09-01 11:48:15 +0200
committerLars Knoll <lars.knoll@qt.io>2017-09-02 07:12:17 +0000
commit74c8fe86755af485f8d0a47799d6d50f00070f05 (patch)
tree9e3d8c51d46d9f0fa2555cc77d184d6b3ee1be7d /src/qml/jsruntime/qv4globalobject.cpp
parenta91383545c6f487cff61f401d11f1e85939222e9 (diff)
Always set the correct FunctionObject when calling JS functions
Renamed ScopedCallData to JSCall, enforced passing a JS FunctionObject to it, and added call() and callAsConstructor() methods to it. Change-Id: I30db65c9765c2896b5909fe2105c0934c6dad861 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Diffstat (limited to 'src/qml/jsruntime/qv4globalobject.cpp')
-rw-r--r--src/qml/jsruntime/qv4globalobject.cpp16
1 files changed, 8 insertions, 8 deletions
diff --git a/src/qml/jsruntime/qv4globalobject.cpp b/src/qml/jsruntime/qv4globalobject.cpp
index 74173f6a6a..11105dfdcb 100644
--- a/src/qml/jsruntime/qv4globalobject.cpp
+++ b/src/qml/jsruntime/qv4globalobject.cpp
@@ -374,12 +374,12 @@ ReturnedValue EvalFunction::evalCall(CallData *callData, bool directCall) const
if (function->isStrict() || (ctx->d()->v4Function->isStrict())) {
ScopedFunctionObject e(scope, FunctionObject::createScriptFunction(ctx, function));
- ScopedCallData callData(scope, 0);
+ JSCall jsCall(scope, e, 0);
if (directCall)
- callData->thisObject = scope.engine->currentStackFrame->thisObject();
+ jsCall->thisObject = scope.engine->currentStackFrame->thisObject();
else
- callData->thisObject = scope.engine->globalObject;
- return e->call(callData);
+ jsCall->thisObject = scope.engine->globalObject;
+ return jsCall.call();
}
ContextStateSaver stateSaver(scope, ctx);
@@ -387,10 +387,10 @@ ReturnedValue EvalFunction::evalCall(CallData *callData, bool directCall) const
// set the correct v4 function for the context
ctx->d()->v4Function = function;
- ScopedCallData cData(scope);
- cData->thisObject = scope.engine->currentStackFrame->thisObject();
- cData->context = *ctx;
- return function->call(cData);
+ JSCall jsCall(scope, nullptr);
+ jsCall->thisObject = scope.engine->currentStackFrame->thisObject();
+ jsCall->context = *ctx;
+ return function->call(jsCall);
}