From a83a818791bc88725e07ea41b7c5fa50828e6b24 Mon Sep 17 00:00:00 2001 From: Anton Kudryavtsev Date: Mon, 9 Oct 2023 14:25:28 +0300 Subject: [PATCH] QTextDocumentPrivate::plainText: simplify code Use QSV more to avoid manual memcpy Also port loop to range-based for Change-Id: I06f4b424853a4b3ee245c66ccc650d87740e2cb8 Reviewed-by: Qt CI Bot Reviewed-by: Edward Welbourne --- src/gui/text/qtextdocument_p.cpp | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/src/gui/text/qtextdocument_p.cpp b/src/gui/text/qtextdocument_p.cpp index 0718300d37..0180fbb6ff 100644 --- a/src/gui/text/qtextdocument_p.cpp +++ b/src/gui/text/qtextdocument_p.cpp @@ -1305,14 +1305,10 @@ void QTextDocumentPrivate::adjustDocumentChangesAndCursors(int from, int addedOr QString QTextDocumentPrivate::plainText() const { QString result; - result.resize(length()); - const QChar *text_unicode = text.unicode(); - QChar *data = result.data(); - for (QTextDocumentPrivate::FragmentIterator it = begin(); it != end(); ++it) { - const QTextFragmentData *f = *it; - ::memcpy(data, text_unicode + f->stringPosition, f->size_array[0] * sizeof(QChar)); - data += f->size_array[0]; - } + result.reserve(length()); + const auto view = QStringView(text); + for (auto f : *this) + result += view.sliced(f->stringPosition, f->size_array[0]); // remove trailing block separator result.chop(1); return result;