Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package libqt5-qtremoteobjects for 
openSUSE:Factory checked in at 2022-11-04 17:34:10
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libqt5-qtremoteobjects (Old)
 and      /work/SRC/openSUSE:Factory/.libqt5-qtremoteobjects.new.2275 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "libqt5-qtremoteobjects"

Fri Nov  4 17:34:10 2022 rev:23 rq:1033110 version:5.15.7+kde0

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/libqt5-qtremoteobjects/libqt5-qtremoteobjects.changes
    2022-09-29 18:12:07.083110003 +0200
+++ 
/work/SRC/openSUSE:Factory/.libqt5-qtremoteobjects.new.2275/libqt5-qtremoteobjects.changes
  2022-11-04 17:36:08.821180986 +0100
@@ -1,0 +2,6 @@
+Thu Nov  3 08:56:18 UTC 2022 - Fabian Vogt <[email protected]>
+
+- Update to version 5.15.7+kde0, rebased upstream:
+  * Fix crash when remoting QML objects with sub-objects
+
+-------------------------------------------------------------------

Old:
----
  qtremoteobjects-everywhere-src-5.15.6+kde0.obscpio

New:
----
  qtremoteobjects-everywhere-src-5.15.7+kde0.obscpio

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ libqt5-qtremoteobjects.spec ++++++
--- /var/tmp/diff_new_pack.DvfJuw/_old  2022-11-04 17:36:09.857186398 +0100
+++ /var/tmp/diff_new_pack.DvfJuw/_new  2022-11-04 17:36:09.861186419 +0100
@@ -19,11 +19,11 @@
 %define qt5_snapshot 1
 %define libname libQt5RemoteObjects5
 %define base_name libqt5
-%define real_version 5.15.6
-%define so_version 5.15.6
+%define real_version 5.15.7
+%define so_version 5.15.7
 %define tar_version qtremoteobjects-everywhere-src-%{version}
 Name:           libqt5-qtremoteobjects
-Version:        5.15.6+kde0
+Version:        5.15.7+kde0
 Release:        0
 Summary:        Qt 5 RemoteObjects Library
 License:        LGPL-3.0-only OR (GPL-2.0-only OR GPL-3.0-or-later)

++++++ _service ++++++
--- /var/tmp/diff_new_pack.DvfJuw/_old  2022-11-04 17:36:09.921186732 +0100
+++ /var/tmp/diff_new_pack.DvfJuw/_new  2022-11-04 17:36:09.925186753 +0100
@@ -1,12 +1,12 @@
 <services>
   <service name="obs_scm" mode="disabled">
    <param name="changesgenerate">enable</param>
-   <param name="versionformat">5.15.6+kde@TAG_OFFSET@</param>
+   <param name="versionformat">5.15.7+kde@TAG_OFFSET@</param>
    <param name="url">https://invent.kde.org/qt/qt/qtremoteobjects.git</param>
    <param name="scm">git</param>
    <param name="filename">qtremoteobjects-everywhere-src</param>
    <param name="revision">kde/5.15</param>
-   <param name="parent-tag">v5.15.6-lts-lgpl</param>
+   <param name="parent-tag">v5.15.7-lts-lgpl</param>
    <param name="changesgenerate">enable</param>
   </service>
   <service name="set_version" mode="disabled"/>

++++++ qtremoteobjects-everywhere-src-5.15.6+kde0.obscpio -> 
qtremoteobjects-everywhere-src-5.15.7+kde0.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtremoteobjects-everywhere-src-5.15.6+kde0/.qmake.conf 
new/qtremoteobjects-everywhere-src-5.15.7+kde0/.qmake.conf
--- old/qtremoteobjects-everywhere-src-5.15.6+kde0/.qmake.conf  2022-08-16 
19:37:46.000000000 +0200
+++ new/qtremoteobjects-everywhere-src-5.15.7+kde0/.qmake.conf  2022-09-12 
17:30:04.000000000 +0200
@@ -4,6 +4,6 @@
 DEFINES += QT_NO_JAVA_STYLE_ITERATORS
 DEFINES += QT_NO_FOREACH
 
-MODULE_VERSION = 5.15.6
+MODULE_VERSION = 5.15.7
 
 QTRO_SOURCE_TREE = $$PWD
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtremoteobjects-everywhere-src-5.15.6+kde0/src/remoteobjects/qremoteobjectsource.cpp
 
new/qtremoteobjects-everywhere-src-5.15.7+kde0/src/remoteobjects/qremoteobjectsource.cpp
--- 
old/qtremoteobjects-everywhere-src-5.15.6+kde0/src/remoteobjects/qremoteobjectsource.cpp
    2022-08-16 19:37:46.000000000 +0200
+++ 
new/qtremoteobjects-everywhere-src-5.15.7+kde0/src/remoteobjects/qremoteobjectsource.cpp
    2022-09-12 17:30:04.000000000 +0200
@@ -113,7 +113,10 @@
             if 
(QMetaType::typeFlags(property.userType()).testFlag(QMetaType::PointerToQObject))
 {
                 auto propertyMeta = 
QMetaType::metaObjectForType(property.userType());
                 QObject *child = property.read(m_object).value<QObject *>();
-                if 
(propertyMeta->inherits(&QAbstractItemModel::staticMetaObject)) {
+                const QMetaObject *meta = child ? child->metaObject() : 
propertyMeta;
+                if (!meta)
+                    continue;
+                if (meta->inherits(&QAbstractItemModel::staticMetaObject)) {
                     const auto modelInfo = api->m_models.at(modelIndex++);
                     QAbstractItemModel *model = 
qobject_cast<QAbstractItemModel *>(child);
                     QAbstractItemAdapterSourceAPI<QAbstractItemModel, 
QAbstractItemModelSourceAdapter> *modelApi =
@@ -455,13 +458,20 @@
     const int propCount = metaObject->propertyCount();
     const int propOffset = metaObject->propertyOffset();
     m_properties.reserve(propCount-propOffset);
-    int i = 0;
-    for (i = propOffset; i < propCount; ++i) {
+    QSet<int> invalidSignals;
+    for (int i = propOffset; i < propCount; ++i) {
         const QMetaProperty property = metaObject->property(i);
         if 
(QMetaType::typeFlags(property.userType()).testFlag(QMetaType::PointerToQObject))
 {
             auto propertyMeta = 
QMetaType::metaObjectForType(property.userType());
             QObject *child = property.read(object).value<QObject *>();
-            if (propertyMeta->inherits(&QAbstractItemModel::staticMetaObject)) 
{
+            const QMetaObject *meta = child ? child->metaObject() : 
propertyMeta;
+            if (!meta) {
+                const int notifyIndex = 
metaObject->property(i).notifySignalIndex();
+                if (notifyIndex != -1)
+                    invalidSignals << notifyIndex;
+                continue;
+            }
+            if (meta->inherits(&QAbstractItemModel::staticMetaObject)) {
                 const QByteArray name = 
QByteArray::fromRawData(property.name(),
                                                                 
qstrlen(property.name()));
                 const QByteArray infoName = name.toUpper() + 
QByteArrayLiteral("_ROLES");
@@ -475,12 +485,15 @@
                                        QString::fromLatin1(property.name()),
                                        roleInfo});
             } else {
-                const QMetaObject *meta = child ? child->metaObject() : 
propertyMeta;
                 QString typeName = 
QtRemoteObjects::getTypeNameAndMetaobjectFromClassInfo(meta);
                 if (typeName.isNull()) {
-                    typeName = QString::fromLatin1(propertyMeta->className());
+                    typeName = QString::fromLatin1(meta->className());
+                    if (typeName.contains(QLatin1String("QQuick")))
+                        typeName.remove(QLatin1String("QQuick"));
+                    else if (int index = 
typeName.indexOf(QLatin1String("_QMLTYPE_")))
+                        typeName.truncate(index);
                     // TODO better way to ensure we have consistent typenames 
between source/replicas?
-                    if (typeName.endsWith(QLatin1String("Source")))
+                    else if (typeName.endsWith(QLatin1String("Source")))
                         typeName.chop(6);
                 }
 
@@ -499,11 +512,13 @@
     }
     const int methodCount = metaObject->methodCount();
     const int methodOffset = metaObject->methodOffset();
-    for (i = methodOffset; i < methodCount; ++i) {
+    for (int i = methodOffset; i < methodCount; ++i) {
         const QMetaMethod mm = metaObject->method(i);
         const QMetaMethod::MethodType m = mm.methodType();
         if (m == QMetaMethod::Signal) {
-            if (m_signals.indexOf(i) >= 0) //Already added as a property 
notifier
+            if (m_signals.indexOf(i) >= 0)  // Already added as a property 
notifier
+                continue;
+            if (invalidSignals.contains(i)) // QObject with no metatype
                 continue;
             m_signals << i;
         } else if (m == QMetaMethod::Slot || m == QMetaMethod::Method)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtremoteobjects-everywhere-src-5.15.6+kde0/tests/auto/qml/usertypes/data/MyType.qml
 
new/qtremoteobjects-everywhere-src-5.15.7+kde0/tests/auto/qml/usertypes/data/MyType.qml
--- 
old/qtremoteobjects-everywhere-src-5.15.6+kde0/tests/auto/qml/usertypes/data/MyType.qml
     1970-01-01 01:00:00.000000000 +0100
+++ 
new/qtremoteobjects-everywhere-src-5.15.7+kde0/tests/auto/qml/usertypes/data/MyType.qml
     2022-09-12 17:30:04.000000000 +0200
@@ -0,0 +1,5 @@
+import QtQuick 2.0
+
+QtObject {
+    property int value: 39
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtremoteobjects-everywhere-src-5.15.6+kde0/tests/auto/qml/usertypes/data/composite.qml
 
new/qtremoteobjects-everywhere-src-5.15.7+kde0/tests/auto/qml/usertypes/data/composite.qml
--- 
old/qtremoteobjects-everywhere-src-5.15.6+kde0/tests/auto/qml/usertypes/data/composite.qml
  1970-01-01 01:00:00.000000000 +0100
+++ 
new/qtremoteobjects-everywhere-src-5.15.7+kde0/tests/auto/qml/usertypes/data/composite.qml
  2022-09-12 17:30:04.000000000 +0200
@@ -0,0 +1,7 @@
+import QtQuick 2.0
+
+QtObject {
+    property QtObject myTypeOk: MyType {} // this works
+    property MyType myType: MyType {} // this crashes
+    property MyType myType2 // this crashes (ensure solution works with null 
object)
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtremoteobjects-everywhere-src-5.15.6+kde0/tests/auto/qml/usertypes/tst_usertypes.cpp
 
new/qtremoteobjects-everywhere-src-5.15.7+kde0/tests/auto/qml/usertypes/tst_usertypes.cpp
--- 
old/qtremoteobjects-everywhere-src-5.15.6+kde0/tests/auto/qml/usertypes/tst_usertypes.cpp
   2022-08-16 19:37:46.000000000 +0200
+++ 
new/qtremoteobjects-everywhere-src-5.15.7+kde0/tests/auto/qml/usertypes/tst_usertypes.cpp
   2022-09-12 17:30:04.000000000 +0200
@@ -65,6 +65,7 @@
     void watcherInQml();
     void hostInQml();
     void twoReplicas();
+    void remoteCompositeType();
 };
 
 tst_usertypes::tst_usertypes()
@@ -293,6 +294,17 @@
     QTRY_COMPARE_WITH_TIMEOUT(obj->property("result2").value<int>(), 7, 500);
 }
 
+void tst_usertypes::remoteCompositeType()
+{
+    QQmlEngine e;
+    QQmlComponent c(&e, SRCDIR "data/composite.qml");
+    QScopedPointer<QObject> obj(c.create());
+    QVERIFY(obj);
+
+    QRemoteObjectRegistryHost host(QUrl("local:remoteCompositeType"));
+    host.enableRemoting(obj.data(), "composite");
+}
+
 QTEST_MAIN(tst_usertypes)
 
 #include "tst_usertypes.moc"

++++++ qtremoteobjects-everywhere-src.obsinfo ++++++
--- /var/tmp/diff_new_pack.DvfJuw/_old  2022-11-04 17:36:10.209188237 +0100
+++ /var/tmp/diff_new_pack.DvfJuw/_new  2022-11-04 17:36:10.209188237 +0100
@@ -1,5 +1,5 @@
 name: qtremoteobjects-everywhere-src
-version: 5.15.6+kde0
-mtime: 1660671466
-commit: aa705010da0f658b78c1155babce7091ae44529a
+version: 5.15.7+kde0
+mtime: 1662996604
+commit: 5f2a598a9134167a0da2efcbf1249fc167ae3750
 

Reply via email to