diff options
Diffstat (limited to 'src/corelib/kernel/qproperty_p.h')
-rw-r--r-- | src/corelib/kernel/qproperty_p.h | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/corelib/kernel/qproperty_p.h b/src/corelib/kernel/qproperty_p.h index aa81aa9203..9185c939c6 100644 --- a/src/corelib/kernel/qproperty_p.h +++ b/src/corelib/kernel/qproperty_p.h @@ -241,6 +241,13 @@ public: void clearDependencyObservers() { for (size_t i = 0; i < qMin(dependencyObserverCount, inlineDependencyObservers.size()); ++i) { QPropertyObserverPointer p{&inlineDependencyObservers[i]}; + if (p.ptr->next.tag() == QPropertyObserver::ActivelyExecuting) { + *(p.ptr->nodeState) = nullptr; + p.ptr->nodeState = nullptr; + + // set tag to "safer" value, as we return the same observer pointer from allocateDependencyObserver + p.ptr->next.setTag(QPropertyObserver::ObserverNotifiesChangeHandler); + } p.unlink(); } if (heapObservers) |