summaryrefslogtreecommitdiffstats
path: root/src/script/api
diff options
context:
space:
mode:
authoraavit <qt-info@nokia.com>2010-11-25 10:53:15 (GMT)
committeraavit <qt-info@nokia.com>2010-11-25 10:53:15 (GMT)
commitb3df558742f6eab6971f2c483bba19c308b7d1ff (patch)
tree0554273c6258ffae75c790d0b7ab2a8aa856ed20 /src/script/api
parentd3ac35fdc0d5580946f886208e081634cbef6fbb (diff)
parent25c9b6ed488b1446cbdd38186992957264596314 (diff)
downloadQt-b3df558742f6eab6971f2c483bba19c308b7d1ff.zip
Qt-b3df558742f6eab6971f2c483bba19c308b7d1ff.tar.gz
Qt-b3df558742f6eab6971f2c483bba19c308b7d1ff.tar.bz2
Merge branch 'master' of scm.dev.nokia.troll.no:qt/oslo-staging-2
Diffstat (limited to 'src/script/api')
-rw-r--r--src/script/api/qscriptvalue.cpp15
1 files changed, 14 insertions, 1 deletions
diff --git a/src/script/api/qscriptvalue.cpp b/src/script/api/qscriptvalue.cpp
index 8cd4057..6ce54f5 100644
--- a/src/script/api/qscriptvalue.cpp
+++ b/src/script/api/qscriptvalue.cpp
@@ -1716,7 +1716,14 @@ QScriptValue QScriptValue::construct(const QScriptValueList &args)
QVarLengthArray<JSC::JSValue, 8> argsVector(args.size());
for (int i = 0; i < args.size(); ++i) {
- if (!args.at(i).isValid())
+ QScriptValue arg = args.at(i);
+ if (QScriptValuePrivate::getEngine(arg) != d->engine && QScriptValuePrivate::getEngine(arg)) {
+ qWarning("QScriptValue::construct() failed: "
+ "cannot construct function with argument created in "
+ "a different engine");
+ return QScriptValue();
+ }
+ if (!arg.isValid())
argsVector[i] = JSC::jsUndefined();
else
argsVector[i] = d->engine->scriptValueToJSCValue(args.at(i));
@@ -1766,6 +1773,12 @@ QScriptValue QScriptValue::construct(const QScriptValue &arguments)
JSC::ExecState *exec = d->engine->currentFrame;
+ if (QScriptValuePrivate::getEngine(arguments) != d->engine && QScriptValuePrivate::getEngine(arguments)) {
+ qWarning("QScriptValue::construct() failed: "
+ "cannot construct function with argument created in "
+ "a different engine");
+ return QScriptValue();
+ }
JSC::JSValue array = d->engine->scriptValueToJSCValue(arguments);
// copied from runtime/FunctionPrototype.cpp, functionProtoFuncApply()
JSC::MarkedArgumentBuffer applyArgs;