summaryrefslogtreecommitdiffstats
path: root/src/script/api/qscriptvalue.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/script/api/qscriptvalue.cpp')
-rw-r--r--src/script/api/qscriptvalue.cpp14
1 files changed, 10 insertions, 4 deletions
diff --git a/src/script/api/qscriptvalue.cpp b/src/script/api/qscriptvalue.cpp
index 41c908d..e512779 100644
--- a/src/script/api/qscriptvalue.cpp
+++ b/src/script/api/qscriptvalue.cpp
@@ -256,13 +256,14 @@ void QScriptValuePrivate::initFromJSCValue(JSC::JSValue value)
{
type = JSC;
jscValue = value;
- if (!JSC::JSImmediate::isImmediate(value)) {
+ if (value.isCell()) {
+ JSC::JSCell *cell = value.asCell();
Q_ASSERT(engine != 0);
QScriptEnginePrivate *eng_p = QScriptEnginePrivate::get(engine);
if (value != eng_p->globalObject) {
- if (!eng_p->keepAliveValues.contains(value))
- eng_p->keepAliveValues[value] = 0;
- eng_p->keepAliveValues[value].ref();
+ if (!eng_p->keepAliveValues.contains(cell))
+ eng_p->keepAliveValues[cell] = 0;
+ eng_p->keepAliveValues[cell].ref();
}
}
}
@@ -347,6 +348,11 @@ QVariant &QScriptValuePrivate::variantValue() const
return static_cast<QScript::QVariantWrapperObject*>(JSC::asObject(jscValue))->value();
}
+void QScriptValuePrivate::setVariantValue(const QVariant &value)
+{
+ static_cast<QScript::QVariantWrapperObject*>(JSC::asObject(jscValue))->setValue(value);
+}
+
/*!
Constructs an invalid QScriptValue.
*/