summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorKent Hansen <khansen@trolltech.com>2009-07-15 13:11:01 (GMT)
committerKent Hansen <khansen@trolltech.com>2009-07-15 13:11:01 (GMT)
commit5b0bd9a7313d2c92a0c067b28e3ed2a0d32ef922 (patch)
treea0f8444ea36ce5fdc4d31166e00fbcb51e944859 /tests
parent422e26fc3e51e936fc3c00c491b9b512e82236f5 (diff)
downloadQt-5b0bd9a7313d2c92a0c067b28e3ed2a0d32ef922.zip
Qt-5b0bd9a7313d2c92a0c067b28e3ed2a0d32ef922.tar.gz
Qt-5b0bd9a7313d2c92a0c067b28e3ed2a0d32ef922.tar.bz2
fix GC-related crash
For some reason our Global Object is not marked by the collector. This fixes the case when you invoke GC explicitly by calling collectGarbage(), but the issue is probably still there when GC is invoked implicitly.
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/qscriptqobject/tst_qscriptqobject.cpp12
1 files changed, 7 insertions, 5 deletions
diff --git a/tests/auto/qscriptqobject/tst_qscriptqobject.cpp b/tests/auto/qscriptqobject/tst_qscriptqobject.cpp
index daf0476..8aea80a 100644
--- a/tests/auto/qscriptqobject/tst_qscriptqobject.cpp
+++ b/tests/auto/qscriptqobject/tst_qscriptqobject.cpp
@@ -1729,7 +1729,6 @@ void tst_QScriptExtQObject::connectAndDisconnect()
m_engine->evaluate("myObject = null");
m_engine->collectGarbage();
m_myObject->resetQtFunctionInvoked();
- QSKIP("Crashes due to GC", SkipAll);
m_myObject->emitMySignal();
QCOMPARE(m_myObject->qtFunctionInvoked(), 20);
}
@@ -1823,7 +1822,6 @@ void tst_QScriptExtQObject::connectAndDisconnectWithBadArgs()
void tst_QScriptExtQObject::cppConnectAndDisconnect()
{
- QSKIP("Crashes (GC-related)", SkipAll);
QScriptEngine eng;
QLineEdit edit;
QLineEdit edit2;
@@ -1895,11 +1893,14 @@ void tst_QScriptExtQObject::cppConnectAndDisconnect()
// make sure we don't crash when engine is deleted
{
QScriptEngine *eng2 = new QScriptEngine;
- QScriptValue fun2 = eng2->evaluate("function(text) { signalObject = this; signalArg = text; }");
+ QScriptValue fun2 = eng2->evaluate("(function(text) { signalObject = this; signalArg = text; })");
+ QVERIFY(fun2.isFunction());
QVERIFY(qScriptConnect(&edit, SIGNAL(textChanged(const QString &)), QScriptValue(), fun2));
delete eng2;
edit.setText("ciao");
- QVERIFY(!qScriptDisconnect(&edit, SIGNAL(textChanged(const QString &)), QScriptValue(), fun2));
+ QEXPECT_FAIL("", "Crashes", Continue);
+ QVERIFY(false);
+ // QVERIFY(!qScriptDisconnect(&edit, SIGNAL(textChanged(const QString &)), QScriptValue(), fun2));
}
// mixing script-side and C++-side connect
@@ -1918,7 +1919,8 @@ void tst_QScriptExtQObject::cppConnectAndDisconnect()
this, SLOT(onSignalHandlerException(QScriptValue)));
eng.globalObject().setProperty("edit", eng.newQObject(&edit));
- QScriptValue fun = eng.evaluate("function() { nonExistingFunction(); }");
+ QScriptValue fun = eng.evaluate("(function() { nonExistingFunction(); })");
+ QVERIFY(fun.isFunction());
QVERIFY(qScriptConnect(&edit, SIGNAL(textChanged(const QString &)), QScriptValue(), fun));
m_signalHandlerException = QScriptValue();