diff options
author | Marc Mutz <marc.mutz@qt.io> | 2021-12-16 10:09:29 +0100 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2022-01-03 11:23:18 +0000 |
commit | 3666dad5e0a419bda8c3e952636fe6f3e3d764b1 (patch) | |
tree | 6433e376488b89d03020a529a3138c7174a9d18f | |
parent | 7e2860d4158438d714f2f86cd65b35f4ab1e2a60 (diff) |
QByteArray: avoid detach() in a no-op replace()
When the the replacement has the same size as the replacee, but that
size is zero, the whole operation is a no-op, and there's no need to
detach().
[ChangeLog][QtCore][QByteArray] A replace(pos, n, after) call no
longer detach()es when n == after.size() == 0.
Change-Id: I1e8d7c7fb6383f8bfea3212e49fca8a128535564
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
(cherry picked from commit c953e5c41750ec886880cfb2cedb89f2886e5424)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-rw-r--r-- | src/corelib/text/qbytearray.cpp | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/corelib/text/qbytearray.cpp b/src/corelib/text/qbytearray.cpp index a03462561f..e339f2fef5 100644 --- a/src/corelib/text/qbytearray.cpp +++ b/src/corelib/text/qbytearray.cpp @@ -2170,9 +2170,10 @@ QByteArray &QByteArray::replace(qsizetype pos, qsizetype len, QByteArrayView aft } if (len == after.size() && (pos + len <= size())) { // same size: in-place replacement possible - detach(); - if (len > 0) + if (len > 0) { + detach(); memcpy(d.data() + pos, after.data(), len*sizeof(char)); + } return *this; } else { // ### optimize me |