summaryrefslogtreecommitdiffstats
path: root/src/corelib/tools
diff options
context:
space:
mode:
authorMårten Nordheim <marten.nordheim@qt.io>2020-09-25 15:39:01 +0200
committerMårten Nordheim <marten.nordheim@qt.io>2020-09-30 10:11:00 +0200
commit7bb17d185d9f2b4b9c1a1c1637b85f78b21c2835 (patch)
treea6aa1ec5129b06cc272b5da8d6876f93786caef3 /src/corelib/tools
parentba465f00edf361693b675229aa1dc7cee973fa81 (diff)
QList: don't detach on squeeze when holding raw data
To match QString and QByteArray behavior Change-Id: Ifce4a5dee6fc9077e855a24499f11f911e359cf5 Reviewed-by: Andrei Golubev <andrei.golubev@qt.io> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@gmx.de> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'src/corelib/tools')
-rw-r--r--src/corelib/tools/qlist.h4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/corelib/tools/qlist.h b/src/corelib/tools/qlist.h
index f93b60d4bb..80a8d1eec9 100644
--- a/src/corelib/tools/qlist.h
+++ b/src/corelib/tools/qlist.h
@@ -521,7 +521,9 @@ void QList<T>::reserve(qsizetype asize)
template <typename T>
inline void QList<T>::squeeze()
{
- if (d->needsDetach() || size() != capacity()) {
+ if (!d.isMutable())
+ return;
+ if (d->needsDetach() || size() < capacity()) {
// must allocate memory
DataPointer detached(Data::allocate(size(), d->detachFlags() & ~Data::CapacityReserved));
if (size()) {