diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/corelib/tools/qarraydata.cpp | 11 | ||||
-rw-r--r-- | src/corelib/tools/qarraydata.h | 14 | ||||
-rw-r--r-- | src/corelib/tools/qarraydatapointer.h | 9 |
3 files changed, 8 insertions, 26 deletions
diff --git a/src/corelib/tools/qarraydata.cpp b/src/corelib/tools/qarraydata.cpp index c6e96c78a9..150f23cc12 100644 --- a/src/corelib/tools/qarraydata.cpp +++ b/src/corelib/tools/qarraydata.cpp @@ -44,8 +44,9 @@ QT_BEGIN_NAMESPACE const QArrayData QArrayData::shared_null = { Q_REFCOUNT_INITIALIZE_STATIC, 0, 0, 0, 0 }; -const QArrayData QArrayData::shared_empty = { Q_REFCOUNT_INITIALIZE_STATIC, 0, 0, 0, 0 }; -const QArrayData QArrayData::unsharable_empty = { { Q_BASIC_ATOMIC_INITIALIZER(0) }, 0, 0, 0, 0 }; + +static const QArrayData qt_array_empty = { Q_REFCOUNT_INITIALIZE_STATIC, 0, 0, 0, 0 }; +static const QArrayData qt_array_unsharable_empty = { { Q_BASIC_ATOMIC_INITIALIZER(0) }, 0, 0, 0, 0 }; QArrayData *QArrayData::allocate(size_t objectSize, size_t alignment, size_t capacity, bool reserve, bool sharable) @@ -57,8 +58,8 @@ QArrayData *QArrayData::allocate(size_t objectSize, size_t alignment, // Don't allocate empty headers if (!capacity) return sharable - ? const_cast<QArrayData *>(&shared_empty) - : const_cast<QArrayData *>(&unsharable_empty); + ? const_cast<QArrayData *>(&qt_array_empty) + : const_cast<QArrayData *>(&qt_array_unsharable_empty); // Allocate extra (alignment - Q_ALIGNOF(QArrayData)) padding bytes so we // can properly align the data array. This assumes malloc is able to @@ -90,7 +91,7 @@ void QArrayData::deallocate(QArrayData *data, size_t objectSize, && !(alignment & (alignment - 1))); Q_UNUSED(objectSize) Q_UNUSED(alignment) - if (data == &unsharable_empty) + if (data == &qt_array_unsharable_empty) return; qFree(data); diff --git a/src/corelib/tools/qarraydata.h b/src/corelib/tools/qarraydata.h index 1fd60e2155..2486bebafa 100644 --- a/src/corelib/tools/qarraydata.h +++ b/src/corelib/tools/qarraydata.h @@ -79,8 +79,6 @@ struct Q_CORE_EXPORT QArrayData size_t alignment); static const QArrayData shared_null; - static const QArrayData shared_empty; - static const QArrayData unsharable_empty; }; template <class T> @@ -117,18 +115,6 @@ struct QTypedArrayData return static_cast<QTypedArrayData *>( const_cast<QArrayData *>(&QArrayData::shared_null)); } - - static QTypedArrayData *sharedEmpty() - { - return static_cast<QTypedArrayData *>( - const_cast<QArrayData *>(&QArrayData::shared_empty)); - } - - static QTypedArrayData *unsharableEmpty() - { - return static_cast<QTypedArrayData *>( - const_cast<QArrayData *>(&QArrayData::unsharable_empty)); - } }; template <class T, size_t N> diff --git a/src/corelib/tools/qarraydatapointer.h b/src/corelib/tools/qarraydatapointer.h index e42d146c58..c03e2ef849 100644 --- a/src/corelib/tools/qarraydatapointer.h +++ b/src/corelib/tools/qarraydatapointer.h @@ -115,12 +115,7 @@ public: void setSharable(bool sharable) { if (d->alloc == 0 && d->size == 0) { - Q_ASSERT(Data::sharedNull() == d - || Data::sharedEmpty() == d - || Data::unsharableEmpty() == d); - d = sharable - ? Data::sharedEmpty() - : Data::unsharableEmpty(); + d = Data::allocate(0, false, sharable); return; } @@ -136,7 +131,7 @@ public: void clear() { QArrayDataPointer tmp(d); - d = Data::sharedEmpty(); + d = Data::allocate(0); } bool detach() |