summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/script/api/qscriptengine.cpp9
-rw-r--r--tests/auto/qscriptvalue/tst_qscriptvalue.cpp4
2 files changed, 5 insertions, 8 deletions
diff --git a/src/script/api/qscriptengine.cpp b/src/script/api/qscriptengine.cpp
index 1b8573c..32c63ab 100644
--- a/src/script/api/qscriptengine.cpp
+++ b/src/script/api/qscriptengine.cpp
@@ -3706,13 +3706,8 @@ QScriptValue QScriptEngine::toObject(const QScriptValue &value)
QScriptValue QScriptEngine::objectById(qint64 id) const
{
Q_D(const QScriptEngine);
- QSet<QScriptValuePrivate*>::const_iterator i = d->attachedScriptValues.constBegin();
- while(i != d->attachedScriptValues.constEnd()) {
- if ( (*i)->objectId() == id )
- return QScriptValuePrivate::get(*i);
- i++;
- }
- return QScriptValue();
+ // Assumes that the cell was not been garbage collected
+ return const_cast<QScriptEnginePrivate*>(d)->scriptValueFromJSCValue((JSC::JSCell*)id);
}
/*!
diff --git a/tests/auto/qscriptvalue/tst_qscriptvalue.cpp b/tests/auto/qscriptvalue/tst_qscriptvalue.cpp
index 3fafce9..718632b 100644
--- a/tests/auto/qscriptvalue/tst_qscriptvalue.cpp
+++ b/tests/auto/qscriptvalue/tst_qscriptvalue.cpp
@@ -3312,7 +3312,9 @@ void tst_QScriptValue::objectId()
QVERIFY(globalObjectId != -1);
QVERIFY(eng.objectById(globalObjectId).strictlyEquals(global));
}
- QVERIFY(eng.objectById(globalObjectId).strictlyEquals(eng.globalObject()));
+ QScriptValue obj = eng.objectById(globalObjectId);
+ QVERIFY(obj.isObject());
+ QVERIFY(obj.strictlyEquals(eng.globalObject()));
}
QTEST_MAIN(tst_QScriptValue)