diff options
| author | Marc Mutz <marc.mutz@qt.io> | 2025-11-25 17:46:49 +0100 |
|---|---|---|
| committer | Marc Mutz <marc.mutz@qt.io> | 2025-11-26 16:14:13 +0100 |
| commit | 0b1074b6da9ac15f66938ba68c1b038fa00e2bb3 (patch) | |
| tree | 63a8cf4e00b2d7113b8a92e6859604dd7f0bffdc /src | |
| parent | 433624d4cd865b32b78ae30db99363bd8b000135 (diff) | |
QJSList: restore NRVO in slice(), join() specialization
... for <QQmlListProperty<QObject>, QObject *>>.
Like in the primary template, return the same object in each return
statement, fixing GCC -Wnrvo, which we're going to add to
headersclean.
Amends e84686415187455a7153d61ca82478053f13e3f9.
Pick-to: 6.10 6.8 6.5
Task-number: QTBUG-142146
Change-Id: I38e9e8374e51d147cdaf4276fa791489117ee4e3
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
Diffstat (limited to 'src')
| -rw-r--r-- | src/qml/jsapi/qjslist.h | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/src/qml/jsapi/qjslist.h b/src/qml/jsapi/qjslist.h index d604e266f2..199a15a323 100644 --- a/src/qml/jsapi/qjslist.h +++ b/src/qml/jsapi/qjslist.h @@ -217,10 +217,10 @@ struct QJSList<QQmlListProperty<QObject>, QObject *> : private QJSListIndexClam QString join(const QString &separator = QStringLiteral(",")) const { + QString result; if (!m_list->count || !m_list->at) - return QString(); + return result; - QString result; for (qsizetype i = 0, end = m_list->count(m_list); i < end; ++i) { if (i != 0) result += separator; @@ -236,12 +236,12 @@ struct QJSList<QQmlListProperty<QObject>, QObject *> : private QJSListIndexClam } QObjectList slice(qsizetype start) const { + QObjectList result; if (!m_list->count || !m_list->at) - return QObjectList(); + return result; const qsizetype size = m_list->count(m_list); const qsizetype clampedStart = clamp(start, size); - QObjectList result; result.reserve(size - clampedStart); for (qsizetype i = clampedStart; i < size; ++i) result.append(m_list->at(m_list, i)); @@ -249,13 +249,13 @@ struct QJSList<QQmlListProperty<QObject>, QObject *> : private QJSListIndexClam } QObjectList slice(qsizetype start, qsizetype end) const { + QObjectList result; if (!m_list->count || !m_list->at) - return QObjectList(); + return result; const qsizetype size = m_list->count(m_list); const qsizetype clampedStart = clamp(start, size); const qsizetype clampedEnd = clamp(end, size, clampedStart); - QObjectList result; result.reserve(clampedEnd - clampedStart); for (qsizetype i = clampedStart; i < clampedEnd; ++i) result.append(m_list->at(m_list, i)); |
