diff options
-rw-r--r-- | src/corelib/kernel/qproperty.cpp | 2 | ||||
-rw-r--r-- | src/corelib/kernel/qproperty.h | 2 | ||||
-rw-r--r-- | src/corelib/kernel/qpropertybinding_p.h | 6 |
3 files changed, 4 insertions, 6 deletions
diff --git a/src/corelib/kernel/qproperty.cpp b/src/corelib/kernel/qproperty.cpp index b362319f22..f62810518b 100644 --- a/src/corelib/kernel/qproperty.cpp +++ b/src/corelib/kernel/qproperty.cpp @@ -279,8 +279,6 @@ QPropertyObserver::~QPropertyObserver() d.unlink(); } -QPropertyObserver::QPropertyObserver() = default; - QPropertyObserver::QPropertyObserver(QPropertyObserver &&other) { std::swap(bindingToMarkDirty, other.bindingToMarkDirty); diff --git a/src/corelib/kernel/qproperty.h b/src/corelib/kernel/qproperty.h index 4a323fe8fe..994eb24cea 100644 --- a/src/corelib/kernel/qproperty.h +++ b/src/corelib/kernel/qproperty.h @@ -607,7 +607,7 @@ public: ObserverNotifiesAlias, }; - QPropertyObserver(); + QPropertyObserver() = default; QPropertyObserver(QPropertyObserver &&other); QPropertyObserver &operator=(QPropertyObserver &&other); ~QPropertyObserver(); diff --git a/src/corelib/kernel/qpropertybinding_p.h b/src/corelib/kernel/qpropertybinding_p.h index 151f5543d5..6257e4506e 100644 --- a/src/corelib/kernel/qpropertybinding_p.h +++ b/src/corelib/kernel/qpropertybinding_p.h @@ -148,9 +148,9 @@ public: void clearDependencyObservers() { if (!hasStaticObserver) { - for (size_t i = 0; i < inlineDependencyObservers.size(); ++i) { - QPropertyObserver empty; - qSwap(inlineDependencyObservers[i], empty); + for (size_t i = 0; i < qMin(dependencyObserverCount, inlineDependencyObservers.size()); ++i) { + QPropertyObserverPointer p{&inlineDependencyObservers[i]}; + p.unlink(); } } if (heapObservers) |