diff options
Diffstat (limited to 'src/declarative/util/qdeclarativeconnections.cpp')
-rw-r--r-- | src/declarative/util/qdeclarativeconnections.cpp | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/src/declarative/util/qdeclarativeconnections.cpp b/src/declarative/util/qdeclarativeconnections.cpp index 596b306..c188521 100644 --- a/src/declarative/util/qdeclarativeconnections.cpp +++ b/src/declarative/util/qdeclarativeconnections.cpp @@ -150,8 +150,14 @@ void QDeclarativeConnections::setTarget(QObject *obj) Q_D(QDeclarativeConnections); if (d->target == obj) return; - foreach (QDeclarativeBoundSignal *s, d->boundsignals) - delete s; + foreach (QDeclarativeBoundSignal *s, d->boundsignals) { + // It is possible that target is being changed due to one of our signal + // handlers -> use deleteLater(). + if (s->isEvaluating()) + s->deleteLater(); + else + delete s; + } d->boundsignals.clear(); d->target = obj; connectSignals(); |