diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/3rdparty/webkit/JavaScriptCore/runtime/Arguments.h | 2 | ||||
-rw-r--r-- | src/script/api/qscriptcontext.cpp | 2 |
2 files changed, 3 insertions, 1 deletions
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/Arguments.h b/src/3rdparty/webkit/JavaScriptCore/runtime/Arguments.h index a3941b6..1f5b600 100644 --- a/src/3rdparty/webkit/JavaScriptCore/runtime/Arguments.h +++ b/src/3rdparty/webkit/JavaScriptCore/runtime/Arguments.h @@ -193,6 +193,8 @@ namespace JSC { extraArguments = d->extraArgumentsFixedBuffer; Register* argv = callFrame->registers() - RegisterFile::CallFrameHeaderSize - numArguments - 1; + if (callFrame->callee() && !callFrame->callee()->isObject(&JSC::JSFunction::info)) + ++argv; // ### off-by-one issue with native functions for (unsigned i = 0; i < numArguments; ++i) extraArguments[i] = argv[i]; diff --git a/src/script/api/qscriptcontext.cpp b/src/script/api/qscriptcontext.cpp index c70b3d4..ed631bf 100644 --- a/src/script/api/qscriptcontext.cpp +++ b/src/script/api/qscriptcontext.cpp @@ -302,7 +302,7 @@ QScriptValue QScriptContext::argument(int index) const return QScriptValue(QScriptValue::UndefinedValue); JSC::Register* thisRegister = d->frame->registers() - JSC::RegisterFile::CallFrameHeaderSize - d->frame->argumentCount(); if (d->frame->codeBlock() == 0) - ++index; + ++index; // ### off-by-one issue with native functions return d->engine->scriptValueFromJSCValue(thisRegister[index].jsValue()); } |