From fc16215e0a22684c1e3d2b0d5496dc050af73b70 Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Wed, 19 Feb 2025 16:58:53 +0100 Subject: [PATCH] QByteArray::replace(): use std::string instead of QVLA QVLA preallocates space for 256 entries, and while that should be enough for most uses, it may be too much in the way of stack usage. Instead of using a QVLA with a non-standard preallocation, use the more compact std::string benefitting from its SSO. Pick-to: 6.5 Change-Id: Ia22543fb287a1976f316f7a4d27b23a22f511463 Reviewed-by: Ahmad Samir (cherry picked from commit 7c21630ce625817f1dc8e7182023b3fc6d36ac37) Reviewed-by: Qt Cherry-pick Bot (cherry picked from commit d561d864eba0af50378b7961b3ecdff6fefeb1d7) --- src/corelib/text/qbytearray.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/corelib/text/qbytearray.cpp b/src/corelib/text/qbytearray.cpp index efbaf0356ad..dbef344f869 100644 --- a/src/corelib/text/qbytearray.cpp +++ b/src/corelib/text/qbytearray.cpp @@ -33,6 +33,7 @@ #include #include +#include #ifdef Q_OS_WIN # if !defined(QT_BOOTSTRAPPED) && (defined(QT_NO_CAST_FROM_ASCII) || defined(QT_NO_CAST_FROM_BYTEARRAY)) @@ -2514,7 +2515,7 @@ QByteArray &QByteArray::replace(QByteArrayView before, QByteArrayView after) return *this; // protect against before or after being part of this - QVarLengthArray pinnedNeedle, pinnedReplacement; + std::string pinnedNeedle, pinnedReplacement; if (QtPrivate::q_points_into_range(a, d)) { pinnedReplacement.assign(a, a + asize); a = pinnedReplacement.data();