summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/corelib/kernel/qproperty.cpp2
-rw-r--r--src/corelib/kernel/qproperty.h2
-rw-r--r--src/corelib/kernel/qpropertybinding_p.h6
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)