diff -r 2f34d5167611 -r fcece45ef507 src/corelib/statemachine/qstatemachine.cpp --- a/src/corelib/statemachine/qstatemachine.cpp Fri Apr 16 15:50:13 2010 +0300 +++ b/src/corelib/statemachine/qstatemachine.cpp Mon May 03 13:17:34 2010 +0300 @@ -1175,6 +1175,16 @@ _startState = 0; } +void QStateMachinePrivate::clearHistory() +{ + Q_Q(QStateMachine); + QList historyStates = qFindChildren(q); + for (int i = 0; i < historyStates.size(); ++i) { + QHistoryState *h = historyStates.at(i); + QHistoryStatePrivate::get(h)->configuration.clear(); + } +} + void QStateMachinePrivate::_q_start() { Q_Q(QStateMachine); @@ -1186,6 +1196,7 @@ internalEventQueue.clear(); qDeleteAll(externalEventQueue); externalEventQueue.clear(); + clearHistory(); #ifdef QSTATEMACHINE_DEBUG qDebug() << q << ": starting";