Fix QString::arg() for format strings with a huge amount of placeholders
QString::arg()s placeholders are limited to triple-digits, so 1000 different ones. By the same token, the length of any one of them is bounded to five (%L?\d{,3}). But the total possible length of escape sequences is _not_ 5000B, because there's no limit on the number of _equal_ placeholders, so a format string where the total escape sequence length exceeded 2Gi characters, e.g. QString("%L100").repeated(INT_MAX/5 + 1).arg(42); would produce corrupt data. Task-number: QTBUG-103531 Change-Id: Id27ee02579387efcbb5928de1eb9acbeb9f954c9 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> (cherry picked from commit 15a80cf8a9d59203f8e2b436a5c804197c044807) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
parent
7cf3c80f54
commit
de515e4008
@ -7941,7 +7941,7 @@ struct ArgEscapeData
|
||||
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'
|
||||
int escape_len; // total length of escape sequences which will be replaced
|
||||
qsizetype escape_len; // total length of escape sequences which will be replaced
|
||||
};
|
||||
|
||||
static ArgEscapeData findArgEscapes(QStringView s)
|
||||
|
Loading…
x
Reference in New Issue
Block a user