diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/corelib/text/qbytearray.cpp | 22 | ||||
-rw-r--r-- | src/corelib/text/qstring.cpp | 10 |
2 files changed, 7 insertions, 25 deletions
diff --git a/src/corelib/text/qbytearray.cpp b/src/corelib/text/qbytearray.cpp index f8c2759507..b85a46b146 100644 --- a/src/corelib/text/qbytearray.cpp +++ b/src/corelib/text/qbytearray.cpp @@ -1714,23 +1714,11 @@ void QByteArray::resize(int size) if (size < 0) size = 0; - if (!d->isShared() && !d->isMutable() && size < int(d.size)) { - d.size = size; - return; - } - - if (size == 0 && !(d->flags() & Data::CapacityReserved)) { - d = DataPointer(Data::allocate(0), 0); - } else { - if (d->needsDetach() || size > capacity() - || (!(d->flags() & Data::CapacityReserved) && size < int(d.size) - && size < (capacity() >> 1))) - reallocData(uint(size) + 1u, d->detachFlags() | Data::GrowsForward); - d.size = size; - if (d->isMutable()) { - d.data()[size] = '\0'; - } - } + if (d->needsDetach() || size > capacity()) + reallocData(uint(size) + 1u, d->detachFlags() | Data::GrowsForward); + d.size = size; + if (d->allocatedCapacity()) + d.data()[size] = 0; } /*! diff --git a/src/corelib/text/qstring.cpp b/src/corelib/text/qstring.cpp index 57be0eabcf..12b04b8ba7 100644 --- a/src/corelib/text/qstring.cpp +++ b/src/corelib/text/qstring.cpp @@ -2242,17 +2242,11 @@ void QString::resize(int size) if (size < 0) size = 0; - if (!d->isShared() && !d->isMutable() && size < int(d.size)) { - d.size = size; - return; - } - if (d->needsDetach() || size > capacity()) reallocData(uint(size) + 1u, true); d.size = size; - if (d->isMutable()) { - d.data()[size] = '\0'; - } + if (d->allocatedCapacity()) + d.data()[size] = 0; } /*! |