diff options
author | Mårten Nordheim <marten.nordheim@qt.io> | 2020-09-25 15:39:01 +0200 |
---|---|---|
committer | Mårten Nordheim <marten.nordheim@qt.io> | 2020-09-30 10:11:00 +0200 |
commit | 7bb17d185d9f2b4b9c1a1c1637b85f78b21c2835 (patch) | |
tree | a6aa1ec5129b06cc272b5da8d6876f93786caef3 /src/corelib/tools | |
parent | ba465f00edf361693b675229aa1dc7cee973fa81 (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.h | 4 |
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()) { |