diff options
author | Kent Hansen <khansen@trolltech.com> | 2009-05-08 14:37:21 (GMT) |
---|---|---|
committer | Kent Hansen <khansen@trolltech.com> | 2009-05-08 14:37:21 (GMT) |
commit | 98f3ebcf1f6751cb76f9268d33faf0bc5ac70f6e (patch) | |
tree | a3923f5ea068066999008eaea8d15a316b99592e /src/corelib/statemachine/qabstracttransition.cpp | |
parent | 110473e9eece3231c3df4fc50c3a958c6c25f2de (diff) | |
download | Qt-98f3ebcf1f6751cb76f9268d33faf0bc5ac70f6e.zip Qt-98f3ebcf1f6751cb76f9268d33faf0bc5ac70f6e.tar.gz Qt-98f3ebcf1f6751cb76f9268d33faf0bc5ac70f6e.tar.bz2 |
gracefully handle deletion of transition's target state
Diffstat (limited to 'src/corelib/statemachine/qabstracttransition.cpp')
-rw-r--r-- | src/corelib/statemachine/qabstracttransition.cpp | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/src/corelib/statemachine/qabstracttransition.cpp b/src/corelib/statemachine/qabstracttransition.cpp index 696da9f..6ddb416 100644 --- a/src/corelib/statemachine/qabstracttransition.cpp +++ b/src/corelib/statemachine/qabstracttransition.cpp @@ -273,7 +273,13 @@ void QAbstractTransition::setTargetState(QAbstractState* target) QList<QAbstractState*> QAbstractTransition::targetStates() const { Q_D(const QAbstractTransition); - return d->targetStates; + QList<QAbstractState*> result; + for (int i = 0; i < d->targetStates.size(); ++i) { + QAbstractState *target = d->targetStates.at(i); + if (target) + result.append(target); + } + return result; } /*! @@ -285,13 +291,19 @@ void QAbstractTransition::setTargetStates(const QList<QAbstractState*> &targets) for (int i=0; i<targets.size(); ++i) { QAbstractState *target = targets.at(i); + if (!target) { + qWarning("QAbstractTransition::setTargetStates: target state(s) cannot be null"); + return; + } if (target->machine() != 0 && target->machine()->rootState() == target) { qWarning("QAbstractTransition::setTargetStates: root state cannot be target of transition"); return; } } - d->targetStates = targets; + d->targetStates.clear(); + for (int i = 0; i < targets.size(); ++i) + d->targetStates.append(targets.at(i)); } /*! |