diff options
author | Glenn Watson <glenn.watson@nokia.com> | 2011-11-22 08:02:17 +1000 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2011-11-22 03:31:14 +0100 |
commit | d2c1adc6f9afc4dd1bab3c487bbde70f3b8f2e81 (patch) | |
tree | 633ef62d68173c588de1ff81e6e6ee25117f0b7f /tests/auto/declarative/qdeclarativecontext/tst_qdeclarativecontext.cpp | |
parent | 0bf08af2b945f10f44561ffa0abd6f89b093b376 (diff) |
Emit destruction signal before child contexts are destroyed.
Verbatim comment from bug report:
When using a QtObject inside an item, and then we call a function
in the Component.onDestruction handler of that item, we get a
crash. This happens because the QDeclarativeContextData engine
has been invalidated before reaching
QDeclarativeExpressionPrivate::evalFunction.
Change code to emit the onDestruction signal before the child
contexts are invalidated.
Task-number: QTBUG-22535
Change-Id: Ic4983ae5fdf104ae977189c21dc202c9b02bc2bc
Reviewed-by: Chris Adams <christopher.adams@nokia.com>
Diffstat (limited to 'tests/auto/declarative/qdeclarativecontext/tst_qdeclarativecontext.cpp')
-rw-r--r-- | tests/auto/declarative/qdeclarativecontext/tst_qdeclarativecontext.cpp | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/tests/auto/declarative/qdeclarativecontext/tst_qdeclarativecontext.cpp b/tests/auto/declarative/qdeclarativecontext/tst_qdeclarativecontext.cpp index 68599a2e83..ba9db4f875 100644 --- a/tests/auto/declarative/qdeclarativecontext/tst_qdeclarativecontext.cpp +++ b/tests/auto/declarative/qdeclarativecontext/tst_qdeclarativecontext.cpp @@ -80,6 +80,7 @@ private slots: void refreshExpressionsCrash(); void refreshExpressionsRootContext(); + void qtbug_22535(); private: QDeclarativeEngine engine; }; @@ -644,6 +645,18 @@ void tst_qdeclarativecontext::refreshExpressionsRootContext() delete o1; } +void tst_qdeclarativecontext::qtbug_22535() +{ + QDeclarativeEngine engine; + QDeclarativeComponent component(&engine, TEST_FILE("qtbug_22535.qml")); + QDeclarativeContext context(engine.rootContext()); + + QObject *o = component.create(&context); + + // Don't crash! + delete o; +} + QTEST_MAIN(tst_qdeclarativecontext) #include "tst_qdeclarativecontext.moc" |