[neon/qt6/qt6-declarative/Neon/release] debian/patches: remove upstream applied patch
Carlos De Maine
null at kde.org
Fri Nov 28 23:19:22 GMT 2025
Git commit 088c84b444dd5a5230ab7fb020fdceb595cac061 by Carlos De Maine.
Committed on 28/11/2025 at 23:19.
Pushed by carlosdem into branch 'Neon/release'.
remove upstream applied patch
D +0 -241 debian/patches/0de0b0f.diff
D +0 -1 debian/patches/series
https://invent.kde.org/neon/qt6/qt6-declarative/-/commit/088c84b444dd5a5230ab7fb020fdceb595cac061
diff --git a/debian/patches/0de0b0f.diff b/debian/patches/0de0b0f.diff
deleted file mode 100644
index 3f5684d..0000000
--- a/debian/patches/0de0b0f.diff
+++ /dev/null
@@ -1,241 +0,0 @@
-From 0de0b0ffdb44d73c605e20f00934dfb44bdf7ad9 Mon Sep 17 00:00:00 2001
-From: Ulf Hermann <ulf.hermann at qt.io>
-Date: Mon, 06 Oct 2025 10:09:01 +0200
-Subject: [PATCH] QmlCompiler: Fix write access to QVariantMap
-
-Without this, it tries to resolve the metaObject of QVariantMap, which
-crashes.
-
-Amends commit cca07aa78841f2d743f0b4d933abb0dd66f0b948.
-
-Fixes: QTBUG-139626
-Pick-to: 6.8
-Change-Id: Id747429ed0d558932b9a6cb8f59e3740982efb56
-Reviewed-by: Olivier De Cannière <olivier.decanniere at qt.io>
-(cherry picked from commit f5e34266ea15c6e44e9816f01f4e627d5f038f0c)
-Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot at qt-project.org>
----
-
-diff --git a/src/qmlcompiler/qqmljscodegenerator.cpp b/src/qmlcompiler/qqmljscodegenerator.cpp
-index ce50e4c..b8ad569 100644
---- a/src/qmlcompiler/qqmljscodegenerator.cpp
-+++ b/src/qmlcompiler/qqmljscodegenerator.cpp
-@@ -1472,7 +1472,7 @@
- generate_GetLookupHelper(index);
- }
-
--QString QQmlJSCodeGenerator::generateVariantMapLookup(
-+QString QQmlJSCodeGenerator::generateVariantMapGetLookup(
- const QString &map, const int nameIndex)
- {
- const QString mapLookup = map
-@@ -1483,6 +1483,18 @@
- + u";\n"_s;
- }
-
-+QString QQmlJSCodeGenerator::generateVariantMapSetLookup(
-+ const QString &map, const int nameIndex,
-+ const QQmlJSScope::ConstPtr &property, const QString &variableIn)
-+{
-+ const QString mapLookup = map
-+ + u"["_s + QQmlJSUtils::toLiteral(m_jsUnitGenerator->lookupName(nameIndex)) + u"]"_s;
-+
-+ return mapLookup + u" = "_s
-+ + conversion(property, m_typeResolver->varType(), variableIn)
-+ + u";\n"_s;
-+}
-+
- void QQmlJSCodeGenerator::generate_GetLookupHelper(int index)
- {
- if (m_state.accumulatorOut().isMethod())
-@@ -1628,7 +1640,7 @@
- REJECT(u"access to 'length' property of sequence wrapped in non-sequence"_s);
- }
- } else if (accumulatorIn.isStoredIn(m_typeResolver->variantMapType())) {
-- m_body += generateVariantMapLookup(m_state.accumulatorVariableIn, index);
-+ m_body += generateVariantMapGetLookup(m_state.accumulatorVariableIn, index);
- } else {
- if (m_state.isRegisterAffectedBySideEffects(Accumulator))
- REJECT(u"reading from a value that's potentially affected by side effects"_s);
-@@ -1639,7 +1651,7 @@
- m_jsUnitGenerator->lookupName(index)));
-
- if (scope.contains(m_typeResolver->variantMapType())) {
-- m_body += generateVariantMapLookup(
-+ m_body += generateVariantMapGetLookup(
- u"(*static_cast<const QVariantMap *>("_s
- + inputContentPointer + u"))"_s, index);
- return;
-@@ -1699,6 +1711,15 @@
- REJECT(u"StoreProperty"_s);
- }
-
-+// TODO: This shouldn't be necessary. If the content can be stored directly, then it should
-+// be stored and used directly. If it cannot be stored directly, it should be stored
-+// as QVariant, but then we cannot dereference the content pointer either.
-+static QString derefContentPointer(const QString &contentPointer)
-+{
-+ Q_ASSERT(contentPointer.startsWith(u'&') || contentPointer[0].isLetterOrNumber());
-+ return contentPointer.startsWith(u'&') ? contentPointer.mid(1) : (u'*' + contentPointer);
-+}
-+
- void QQmlJSCodeGenerator::generate_SetLookup(int index, int baseReg)
- {
- INJECT_TRACE_INFO(generate_SetLookup);
-@@ -1707,8 +1728,9 @@
- const QQmlJSScope::ConstPtr valueType = m_state.accumulatorIn().storedType();
- const QQmlJSRegisterContent property = m_state.readAccumulator();
- Q_ASSERT(property.isConversion());
-- const QQmlJSScope::ConstPtr originalScope
-- = m_typeResolver->original(property.conversionResultScope()).containedType();
-+ const QQmlJSRegisterContent original
-+ = m_typeResolver->original(property.conversionResultScope());
-+ const QQmlJSScope::ConstPtr originalScope = original.containedType();
-
- if (property.storedType().isNull()) {
- REJECT(u"SetLookup. Could not find property "
-@@ -1758,9 +1780,7 @@
-
- // We can resize without write back on a list property because it's actually a reference.
- m_body += u"const int begin = "_s + object + u".count(&" + object + u");\n"_s;
-- m_body += u"const int end = "_s
-- + (variableIn.startsWith(u'&') ? variableIn.mid(1) : (u'*' + variableIn))
-- + u";\n"_s;
-+ m_body += u"const int end = "_s + derefContentPointer(variableIn) + u";\n"_s;
- m_body += u"for (int i = begin; i < end; ++i)\n"_s;
- m_body += u" "_s + object + u".append(&"_s + object + u", nullptr);\n"_s;
- m_body += u"for (int i = begin; i > end; --i)\n"_s;
-@@ -1770,10 +1790,26 @@
- }
- case QQmlJSScope::AccessSemantics::Value: {
- const QQmlJSRegisterContent base = registerType(baseReg);
-+ if (base.isStoredIn(m_typeResolver->variantMapType())) {
-+ m_body += generateVariantMapSetLookup(
-+ registerVariable(baseReg), index, property.storedType(),
-+ derefContentPointer(variableIn));
-+ generateWriteBack(baseReg);
-+ break;
-+ }
- const QString baseContentPointer = resolveValueTypeContentPointer(
- originalScope, base, object,
- u"TypeError: Value is %1 and could not be converted to an object"_s);
-
-+ if (original.contains(m_typeResolver->variantMapType())) {
-+ m_body += generateVariantMapSetLookup(
-+ u"(*static_cast<const QVariantMap *>("_s
-+ + baseContentPointer + u"))"_s, index, property.storedType(),
-+ derefContentPointer(variableIn));
-+ generateWriteBack(baseReg);
-+ break;
-+ }
-+
- const QString lookup = u"aotContext->setValueLookup("_s + indexString
- + u", "_s + baseContentPointer
- + u", "_s + variableIn + u')';
-diff --git a/src/qmlcompiler/qqmljscodegenerator_p.h b/src/qmlcompiler/qqmljscodegenerator_p.h
-index ce160bf..46da0bb 100644
---- a/src/qmlcompiler/qqmljscodegenerator_p.h
-+++ b/src/qmlcompiler/qqmljscodegenerator_p.h
-@@ -366,7 +366,10 @@
- const QQmlJSMetaMethod &ctor, const QList<QQmlJSRegisterContent> &argumentTypes,
- const QStringList &arguments, const QString &metaType, const QString &metaObject);
-
-- QString generateVariantMapLookup(const QString &map, const int nameIndex);
-+ QString generateVariantMapGetLookup(const QString &map, const int nameIndex);
-+ QString generateVariantMapSetLookup(
-+ const QString &map, const int nameIndex, const QQmlJSScope::ConstPtr &property,
-+ const QString &variableIn);
-
- QQmlJSRegisterContent originalType(QQmlJSRegisterContent tracked)
- {
-diff --git a/tests/auto/qml/qmlcppcodegen/data/variantMapLookup.h b/tests/auto/qml/qmlcppcodegen/data/variantMapLookup.h
-index de7ac4f..c1e5206 100644
---- a/tests/auto/qml/qmlcppcodegen/data/variantMapLookup.h
-+++ b/tests/auto/qml/qmlcppcodegen/data/variantMapLookup.h
-@@ -7,19 +7,32 @@
- {
- Q_OBJECT
- QML_ELEMENT
-- Q_PROPERTY(QVariantMap data READ data CONSTANT)
-- Q_PROPERTY(QList<QVariantMap> many READ many CONSTANT)
-+ Q_PROPERTY(QVariantMap data READ data WRITE setData NOTIFY dataChanged)
-+ Q_PROPERTY(QList<QVariantMap> many READ many NOTIFY dataChanged)
-
- public:
- VariantMapLookupFoo(QObject *parent = nullptr) : QObject(parent) { }
-
--private:
-- QVariantMap data() const { return { { QStringLiteral("value"), 42 } }; }
-+ QVariantMap data() const { return m_data; }
-+ void setData(const QVariantMap &data)
-+ {
-+ if (data == m_data)
-+ return;
-+ m_data = data;
-+ emit dataChanged();
-+ }
-+
- QList<QVariantMap> many() const
- {
- const QVariantMap one = data();
- return QList<QVariantMap>({one, one, one});
- }
-+
-+signals:
-+ void dataChanged();
-+
-+private:
-+ QVariantMap m_data;
- };
-
-
-diff --git a/tests/auto/qml/qmlcppcodegen/data/variantMapLookup.qml b/tests/auto/qml/qmlcppcodegen/data/variantMapLookup.qml
-index 45cb0ed..75b4fd0 100644
---- a/tests/auto/qml/qmlcppcodegen/data/variantMapLookup.qml
-+++ b/tests/auto/qml/qmlcppcodegen/data/variantMapLookup.qml
-@@ -3,10 +3,28 @@
- import QtQuick
-
- Item {
-+ id: root
- property int i: moo.data.value
- property int j: moo.many[1].value
-+ property string foo: moo.data.foo
-
- VariantMapLookupFoo {
- id: moo
-+ data: {
-+ let result = { value: 42 };
-+ switch(root.visible) {
-+ case true:
-+ result.foo = "blue";
-+ break;
-+ case false:
-+ result.foo = "green";
-+ break;
-+ }
-+ return result;
-+ }
-+ }
-+
-+ function doI() {
-+ moo.data.value = i + 1
- }
- }
-diff --git a/tests/auto/qml/qmlcppcodegen/tst_qmlcppcodegen.cpp b/tests/auto/qml/qmlcppcodegen/tst_qmlcppcodegen.cpp
-index 6a9c50c..9f85f64 100644
---- a/tests/auto/qml/qmlcppcodegen/tst_qmlcppcodegen.cpp
-+++ b/tests/auto/qml/qmlcppcodegen/tst_qmlcppcodegen.cpp
-@@ -6097,6 +6097,12 @@
- QVERIFY(!o.isNull());
- QCOMPARE(o->property("i"), 42);
- QCOMPARE(o->property("j"), 42);
-+ QCOMPARE(o->property("foo"), u"blue"_s);
-+
-+ QMetaObject::invokeMethod(o.data(), "doI");
-+ QCOMPARE(o->property("i"), 43);
-+ QCOMPARE(o->property("j"), 43);
-+ QCOMPARE(o->property("foo"), u"blue"_s);
- }
-
- void tst_QmlCppCodegen::variantReturn()
diff --git a/debian/patches/series b/debian/patches/series
deleted file mode 100644
index 591f3f8..0000000
--- a/debian/patches/series
+++ /dev/null
@@ -1 +0,0 @@
-0de0b0f.diff
More information about the Neon-commits
mailing list