summaryrefslogtreecommitdiffstats
path: root/src/script
diff options
context:
space:
mode:
authorOlivier Goffart <ogoffart@trolltech.com>2009-08-24 08:34:57 (GMT)
committerOlivier Goffart <ogoffart@trolltech.com>2009-08-24 08:34:57 (GMT)
commit648498dd839d88ea6ce9889eb71e16ac9a42e988 (patch)
tree5615d0fda515bddbe915930679599f026a6fabda /src/script
parent351870317388ac7479b39015263f1db440cc6587 (diff)
downloadQt-648498dd839d88ea6ce9889eb71e16ac9a42e988.zip
Qt-648498dd839d88ea6ce9889eb71e16ac9a42e988.tar.gz
Qt-648498dd839d88ea6ce9889eb71e16ac9a42e988.tar.bz2
Fix QScriptContext::argumentObjects for function called with QScriptValue::call
They have the hostCallFrameFlag, but are function context, not <eval> context
Diffstat (limited to 'src/script')
-rw-r--r--src/script/api/qscriptcontext.cpp9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/script/api/qscriptcontext.cpp b/src/script/api/qscriptcontext.cpp
index 0b1ca33..6a85ede 100644
--- a/src/script/api/qscriptcontext.cpp
+++ b/src/script/api/qscriptcontext.cpp
@@ -305,8 +305,8 @@ QScriptValue QScriptContext::argumentsObject() const
{
JSC::CallFrame *frame = const_cast<JSC::ExecState*>(QScriptEnginePrivate::frameForContext(this));
- if (frame == frame->lexicalGlobalObject()->globalExec() || frame->callerFrame()->hasHostCallFrameFlag()) {
- // <global> or <eval> context doesn't have arguments. return an empty object
+ if (frame == frame->lexicalGlobalObject()->globalExec()) {
+ // <global> context doesn't have arguments. return an empty object
return QScriptEnginePrivate::get(QScript::scriptEngineFromExec(frame))->newObject();
}
@@ -316,6 +316,11 @@ QScriptValue QScriptContext::argumentsObject() const
return QScript::scriptEngineFromExec(frame)->scriptValueFromJSCValue(result);
}
+ if (frame->callerFrame()->hasHostCallFrameFlag()) {
+ // <eval> context doesn't have arguments. return an empty object
+ return QScriptEnginePrivate::get(QScript::scriptEngineFromExec(frame))->newObject();
+ }
+
//for a native function
if (!frame->optionalCalleeArguments()) {
Q_ASSERT(frame->argumentCount() > 0); //we need at least 'this' otherwise we'll crash later