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:20 +0000 |
commit | 60f3d7f32496b04e5d67a6d711c15b4faec56564 (patch) | |
tree | 752d6df9af0250d173901722f2a5778d42564844 /src | |
parent | 7f3ca223a66a4228418c9b680ea36fa1ede4e285 (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>
Diffstat (limited to 'src')
-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 be7d236391..65b97501ca 100644 --- a/src/corelib/text/qbytearray.cpp +++ b/src/corelib/text/qbytearray.cpp @@ -2161,9 +2161,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 |