Avoid crash in QTextMarkdownWriter::writeBlock()

The inner loop would go out of bounds whenever it tried to find the end
of a run of spaces in a fragment that contained only spaces.

Fixes: QTBUG-104999
Change-Id: I5dda03b31194fff12f6052c458a0eb85d0be5c2b
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
(cherry picked from commit 9807c4e5afc953444a4b5a161ceb31c68fdf2484)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
Shawn Rutledge 2022-09-09 22:35:24 +02:00 committed by Qt Cherry-pick Bot
parent e9d0bab1de
commit 92e38ed3d4

View File

@ -540,13 +540,13 @@ int QTextMarkdownWriter::writeBlock(const QTextBlock &block, bool wrap, bool ign
}
if (wrap && col + markers.length() * 2 + fragmentText.length() > ColumnLimit) {
int i = 0;
int fragLen = fragmentText.length();
const int fragLen = fragmentText.length();
bool breakingLine = false;
while (i < fragLen) {
if (col >= ColumnLimit) {
m_stream << Newline << wrapIndentString;
col = m_wrappedLineIndent;
while (fragmentText[i].isSpace())
while (i < fragLen && fragmentText[i].isSpace())
++i;
}
int j = i + ColumnLimit - col;