aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/types/qqmlbind.cpp
diff options
context:
space:
mode:
authorUlf Hermann <ulf.hermann@qt.io>2023-09-07 14:16:06 +0200
committerUlf Hermann <ulf.hermann@qt.io>2023-09-09 08:05:23 +0200
commit034cd962f5196b4d729459f01869169b37956597 (patch)
tree380db21a6698ab7e3c444b100ba197a4f8530c3e /src/qml/types/qqmlbind.cpp
parente7eb542a553c75cdb917450915addb3b9e20c0db (diff)
QQmlBind: Move delayedName into place rather than taking it by const ref
Using a const reference triggers QTBUG-116742 because the refcounting fails in some non-obvious way. Moving the string into place avoids touching the refcount. Task-number: QTBUG-116742 Change-Id: I9195ad84ac2c97d6624cd29e4c747f66c7919b09 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Diffstat (limited to 'src/qml/types/qqmlbind.cpp')
-rw-r--r--src/qml/types/qqmlbind.cpp10
1 files changed, 5 insertions, 5 deletions
diff --git a/src/qml/types/qqmlbind.cpp b/src/qml/types/qqmlbind.cpp
index cdca6e89d4..53f1a90c82 100644
--- a/src/qml/types/qqmlbind.cpp
+++ b/src/qml/types/qqmlbind.cpp
@@ -281,7 +281,7 @@ public:
const QV4::CompiledData::Binding *binding,
QQmlComponentPrivate::ConstructionState *immediateState);
void createDelayedValues();
- void onDelayedValueChanged(const QString &delayedName);
+ void onDelayedValueChanged(QString delayedName);
void evalDelayed();
void buildBindEntries(QQmlBind *q, QQmlComponentPrivate::DeferredState *deferredState);
};
@@ -898,14 +898,14 @@ void QQmlBindPrivate::createDelayedValues()
delayedValues = std::make_unique<QQmlPropertyMap>();
QObject::connect(
delayedValues.get(), &QQmlPropertyMap::valueChanged,
- delayedValues.get(), [this](const QString &delayedName, const QVariant &value) {
+ delayedValues.get(), [this](QString delayedName, const QVariant &value) {
Q_UNUSED(value);
- onDelayedValueChanged(delayedName);
+ onDelayedValueChanged(std::move(delayedName));
}
);
}
-void QQmlBindPrivate::onDelayedValueChanged(const QString &delayedName)
+void QQmlBindPrivate::onDelayedValueChanged(QString delayedName)
{
Q_ASSERT(delayed);
Q_ASSERT(delayedValues);
@@ -916,7 +916,7 @@ void QQmlBindPrivate::onDelayedValueChanged(const QString &delayedName)
else if (pending.contains(delayedName))
return;
- pending.append(delayedName);
+ pending.append(std::move(delayedName));
(*delayedValues)[pendingName].setValue(std::move(pending));
}