QString: fix arg() for >2Gi repeated lowest-escape-sequence-numbers

Building on 15a80cf8a9, this patch fixes
the case where there are more than INT_MAX occurrences of the
lowest-escape-sequence number, as in

   QString("%0").repeated(qsizetype(INT_MAX) + 1).arg(42);

by replacing the corresponding int variables with qsizetype ones.

Task-number: QTBUG-103531
Pick-to: 6.4 6.3
Change-Id: I6f4593a86d8d605031bc1d6520a247676091b2c2
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
bb10
Marc Mutz 2022-08-11 14:50:46 +02:00
parent 1f9c1f032c
commit 32c0d32a4f
1 changed files with 4 additions and 4 deletions

View File

@ -8012,9 +8012,9 @@ static void checkArgEscape(QStringView s)
struct ArgEscapeData
{
int min_escape; // lowest escape sequence number
int occurrences; // number of occurrences of the lowest escape sequence number
int locale_occurrences; // number of occurrences of the lowest escape sequence number that
// contain 'L'
qsizetype occurrences; // number of occurrences of the lowest escape sequence number
qsizetype locale_occurrences; // number of occurrences of the lowest escape sequence number that
// contain 'L'
qsizetype escape_len; // total length of escape sequences which will be replaced
};
@ -8107,7 +8107,7 @@ static QString replaceArgEscapes(QStringView s, const ArgEscapeData &d, qsizetyp
QString result(result_len, Qt::Uninitialized);
QChar *rc = const_cast<QChar *>(result.unicode());
QChar *const result_end = rc + result_len;
int repl_cnt = 0;
qsizetype repl_cnt = 0;
const QChar *c = s.begin();
const QChar *const uc_end = s.end();