summaryrefslogtreecommitdiffstats
path: root/src/corelib/kernel
diff options
context:
space:
mode:
Diffstat (limited to 'src/corelib/kernel')
-rw-r--r--src/corelib/kernel/qproperty.cpp5
-rw-r--r--src/corelib/kernel/qpropertyprivate.h7
2 files changed, 8 insertions, 4 deletions
diff --git a/src/corelib/kernel/qproperty.cpp b/src/corelib/kernel/qproperty.cpp
index 3eab02ac86..ce2e3d0ce1 100644
--- a/src/corelib/kernel/qproperty.cpp
+++ b/src/corelib/kernel/qproperty.cpp
@@ -47,10 +47,9 @@ QT_BEGIN_NAMESPACE
using namespace QtPrivate;
-QPropertyBindingPrivatePtr::~QPropertyBindingPrivatePtr()
+void QPropertyBindingPrivatePtr::destroyAndFreeMemory()
{
- if (d && (--d->ref == 0))
- QPropertyBindingPrivate::destroyAndFreeMemory(static_cast<QPropertyBindingPrivate *>(d));
+ QPropertyBindingPrivate::destroyAndFreeMemory(static_cast<QPropertyBindingPrivate *>(d));
}
void QPropertyBindingPrivatePtr::reset(QtPrivate::RefCounted *ptr) noexcept
diff --git a/src/corelib/kernel/qpropertyprivate.h b/src/corelib/kernel/qpropertyprivate.h
index 91d9e56d2f..10bf4ca828 100644
--- a/src/corelib/kernel/qpropertyprivate.h
+++ b/src/corelib/kernel/qpropertyprivate.h
@@ -85,7 +85,12 @@ public:
T *take() noexcept { T *x = d; d = nullptr; return x; }
QPropertyBindingPrivatePtr() noexcept : d(nullptr) { }
- Q_CORE_EXPORT ~QPropertyBindingPrivatePtr();
+ ~QPropertyBindingPrivatePtr()
+ {
+ if (d && (--d->ref == 0))
+ destroyAndFreeMemory();
+ }
+ Q_CORE_EXPORT void destroyAndFreeMemory();
explicit QPropertyBindingPrivatePtr(T *data) noexcept : d(data) { if (d) d->addRef(); }
QPropertyBindingPrivatePtr(const QPropertyBindingPrivatePtr &o) noexcept