From 3f9a1230e32cb43d61c8d42c9bcb2beb322f6583 Mon Sep 17 00:00:00 2001 From: Kent Hansen Date: Wed, 19 Aug 2009 16:51:43 +0200 Subject: invalidate wrapped JSC::JSValue when script engine is deleted Otherwise we will crash if someone tries to do something with the value. --- src/script/api/qscriptvalue_p.h | 7 +++++-- tests/auto/qscriptextqobject/tst_qscriptextqobject.cpp | 4 +--- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/script/api/qscriptvalue_p.h b/src/script/api/qscriptvalue_p.h index 7c1d538..71bff07 100644 --- a/src/script/api/qscriptvalue_p.h +++ b/src/script/api/qscriptvalue_p.h @@ -144,8 +144,11 @@ public: { // if type is not developed in js engine there is no // need to invalidate the object - if (isJSC()) valid=false; - engine=0; + if (isJSC()) { + valid = false; + jscValue = JSC::JSValue(); + } + engine = 0; } qint64 objectId() diff --git a/tests/auto/qscriptextqobject/tst_qscriptextqobject.cpp b/tests/auto/qscriptextqobject/tst_qscriptextqobject.cpp index 343d91d..8de6c4e 100644 --- a/tests/auto/qscriptextqobject/tst_qscriptextqobject.cpp +++ b/tests/auto/qscriptextqobject/tst_qscriptextqobject.cpp @@ -1889,9 +1889,7 @@ void tst_QScriptExtQObject::cppConnectAndDisconnect() QVERIFY(qScriptConnect(&edit, SIGNAL(textChanged(const QString &)), QScriptValue(), fun2)); delete eng2; edit.setText("ciao"); - QEXPECT_FAIL("", "Crashes", Continue); - QVERIFY(false); - // QVERIFY(!qScriptDisconnect(&edit, SIGNAL(textChanged(const QString &)), QScriptValue(), fun2)); + QVERIFY(!qScriptDisconnect(&edit, SIGNAL(textChanged(const QString &)), QScriptValue(), fun2)); } // mixing script-side and C++-side connect -- cgit v0.12