for (int ii = 0; ii < m_objectCount; ++ii)
m_objects[ii] = vme->objects[ii];
- m_contextCount = (vme->rootContext.isNull())?0:1 + vme->states.count();
+ m_contextCount = (vme->rootContext.isNull()?0:1) + vme->states.count();
m_contexts = new QDeclarativeGuardedContextData[m_contextCount];
for (int ii = 0; ii < vme->states.count(); ++ii)
m_contexts[ii] = vme->states.at(ii).context;
#include <QPointer>
#include <QFileInfo>
#include <QDeclarativeEngine>
+#include <QDeclarativeContext>
#include <QDeclarativeProperty>
#include <QDeclarativeComponent>
#include <QDeclarativeIncubator>
void chainedAsynchronousIfNested();
void chainedAsynchronousIfNestedOnCompleted();
void selfDelete();
+ void contextDelete();
private:
QDeclarativeIncubationController controller;
}
}
+// Test that QML doesn't crash if the context is deleted prior to the incubator
+// first executing.
+void tst_qdeclarativeincubator::contextDelete()
+{
+ QDeclarativeContext *context = new QDeclarativeContext(engine.rootContext());
+ QDeclarativeComponent component(&engine, TEST_FILE("contextDelete.qml"));
+
+ QDeclarativeIncubator incubator;
+ component.create(incubator, context);
+
+ delete context;
+
+ {
+ bool b = false;
+ controller.incubateWhile(&b);
+ }
+}
+
QTEST_MAIN(tst_qdeclarativeincubator)
#include "tst_qdeclarativeincubator.moc"