Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package qt6-connectivity for 
openSUSE:Factory checked in at 2025-02-03 21:40:50
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/qt6-connectivity (Old)
 and      /work/SRC/openSUSE:Factory/.qt6-connectivity.new.2316 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "qt6-connectivity"

Mon Feb  3 21:40:50 2025 rev:30 rq:1242043 version:6.8.2

Changes:
--------
--- /work/SRC/openSUSE:Factory/qt6-connectivity/qt6-connectivity.changes        
2025-01-25 19:09:56.930430964 +0100
+++ 
/work/SRC/openSUSE:Factory/.qt6-connectivity.new.2316/qt6-connectivity.changes  
    2025-02-03 21:40:56.248082771 +0100
@@ -1,0 +2,8 @@
+Fri Jan 31 10:22:53 UTC 2025 - Christophe Marin <christo...@krop.fr>
+
+- Update to 6.8.2
+  https://www.qt.io/blog/qt-6.8.2-released
+- Drop patch, merged upstream:
+  * 0001-QLowEnergyControllerPrivateBluez-guard-against-malfo.patch
+
+-------------------------------------------------------------------

Old:
----
  0001-QLowEnergyControllerPrivateBluez-guard-against-malfo.patch
  qtconnectivity-everywhere-src-6.8.1.tar.xz

New:
----
  qtconnectivity-everywhere-src-6.8.2.tar.xz

BETA DEBUG BEGIN:
  Old:- Drop patch, merged upstream:
  * 0001-QLowEnergyControllerPrivateBluez-guard-against-malfo.patch
BETA DEBUG END:

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

Other differences:
------------------
++++++ qt6-connectivity.spec ++++++
--- /var/tmp/diff_new_pack.xn8TIn/_old  2025-02-03 21:40:57.008114272 +0100
+++ /var/tmp/diff_new_pack.xn8TIn/_new  2025-02-03 21:40:57.008114272 +0100
@@ -16,7 +16,7 @@
 #
 
 
-%define real_version 6.8.1
+%define real_version 6.8.2
 %define short_version 6.8
 %define tar_name qtconnectivity-everywhere-src
 %define tar_suffix %{nil}
@@ -27,15 +27,13 @@
 %endif
 #
 Name:           qt6-connectivity%{?pkg_suffix}
-Version:        6.8.1
+Version:        6.8.2
 Release:        0
 Summary:        Qt 6 connectivity tools and libraries
 License:        GPL-2.0-only OR LGPL-3.0-only OR GPL-3.0-only
 URL:            https://www.qt.io
 Source0:        
https://download.qt.io/official_releases/qt/%{short_version}/%{real_version}%{tar_suffix}/submodules/%{tar_name}-%{real_version}%{tar_suffix}.tar.xz
 Source99:       qt6-connectivity-rpmlintrc
-# PATCH-FIX-UPSTREAM
-Patch0:         0001-QLowEnergyControllerPrivateBluez-guard-against-malfo.patch
 BuildRequires:  pkgconfig
 BuildRequires:  qt6-core-private-devel
 BuildRequires:  qt6-network-private-devel

++++++ qtconnectivity-everywhere-src-6.8.1.tar.xz -> 
qtconnectivity-everywhere-src-6.8.2.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/qtconnectivity-everywhere-src-6.8.1/.cmake.conf 
new/qtconnectivity-everywhere-src-6.8.2/.cmake.conf
--- old/qtconnectivity-everywhere-src-6.8.1/.cmake.conf 2024-11-21 
04:34:01.000000000 +0100
+++ new/qtconnectivity-everywhere-src-6.8.2/.cmake.conf 2025-01-24 
10:12:03.000000000 +0100
@@ -1,4 +1,4 @@
-set(QT_REPO_MODULE_VERSION "6.8.1")
+set(QT_REPO_MODULE_VERSION "6.8.2")
 set(QT_REPO_MODULE_PRERELEASE_VERSION_SEGMENT "alpha1")
 set(QT_EXTRA_INTERNAL_TARGET_DEFINES "QT_NO_AS_CONST=1")
 list(APPEND QT_EXTRA_INTERNAL_TARGET_DEFINES "QT_NO_FOREACH=1")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/qtconnectivity-everywhere-src-6.8.1/.tag 
new/qtconnectivity-everywhere-src-6.8.2/.tag
--- old/qtconnectivity-everywhere-src-6.8.1/.tag        2024-11-21 
04:34:01.000000000 +0100
+++ new/qtconnectivity-everywhere-src-6.8.2/.tag        2025-01-24 
10:12:03.000000000 +0100
@@ -1 +1 @@
-c98e9bfee39f85914b7e7fb0ee991a2ac681f365
+7f522528d58507931237500ffae7612d6c4b8725
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/qtconnectivity-everywhere-src-6.8.1/CMakeLists.txt 
new/qtconnectivity-everywhere-src-6.8.2/CMakeLists.txt
--- old/qtconnectivity-everywhere-src-6.8.1/CMakeLists.txt      2024-11-21 
04:34:01.000000000 +0100
+++ new/qtconnectivity-everywhere-src-6.8.2/CMakeLists.txt      2025-01-24 
10:12:03.000000000 +0100
@@ -12,7 +12,7 @@
 )
 
 find_package(Qt6 ${PROJECT_VERSION} CONFIG REQUIRED COMPONENTS BuildInternals 
Core Network)
-find_package(Qt6 ${PROJECT_VERSION} CONFIG OPTIONAL_COMPONENTS
+find_package(Qt6 ${PROJECT_VERSION} QUIET CONFIG OPTIONAL_COMPONENTS
     DBus Gui Widgets Quick QuickControls2)
 qt_internal_project_setup()
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/qtconnectivity-everywhere-src-6.8.1/REUSE.toml 
new/qtconnectivity-everywhere-src-6.8.2/REUSE.toml
--- old/qtconnectivity-everywhere-src-6.8.1/REUSE.toml  1970-01-01 
01:00:00.000000000 +0100
+++ new/qtconnectivity-everywhere-src-6.8.2/REUSE.toml  2025-01-24 
10:12:03.000000000 +0100
@@ -0,0 +1,59 @@
+version = 1
+
+[[annotations]]
+path = ["tests/**.ui", "tests/**.txt", "tests/**.nfc"]
+precedence = "closest"
+comment = "test"
+SPDX-FileCopyrightText = "Copyright (C) 2024 The Qt Company Ltd."
+SPDX-License-Identifier = "LicenseRef-Qt-Commercial OR GPL-3.0-only"
+
+[[annotations]]
+path = ["src/android/bluetooth/AndroidManifest.xml",
+        "src/android/nfc/AndroidManifest.xml"]
+precedence = "closest"
+comment = "modile anf plugins"
+SPDX-FileCopyrightText = "Copyright (C) 2024 The Qt Company Ltd."
+SPDX-License-Identifier = "LicenseRef-Qt-Commercial OR LGPL-3.0-only OR 
GPL-2.0-only OR GPL-3.0-only"
+
+[[annotations]]
+path = ["**.pro", ".cmake.conf", "**.yaml", "**.json", "**.cfg", "**.plist"]
+precedence = "closest"
+comment = "build system"
+SPDX-FileCopyrightText = "Copyright (C) 2024 The Qt Company Ltd."
+SPDX-License-Identifier = "BSD-3-Clause"
+
+[[annotations]]
+path = [".tag", "**/.gitattributes", "**.gitignore"]
+precedence = "closest"
+comment = "build system"
+SPDX-FileCopyrightText = "Copyright (C) 2024 The Qt Company Ltd."
+SPDX-License-Identifier = "BSD-3-Clause"
+
+[[annotations]]
+path = ["**/doc/images/**", "examples/**"]
+comment = "this must be after the build system table because example and 
snippets take precedence over build system"
+precedence = "closest"
+SPDX-FileCopyrightText = "Copyright (C) 2024 The Qt Company Ltd."
+SPDX-License-Identifier = "LicenseRef-Qt-Commercial OR BSD-3-Clause"
+
+[[annotations]]
+path = ["**/README*", "**.qdocconf", "src/nfc/ApiChangesQt6.txt"]
+comment = "documentation"
+precedence = "closest"
+SPDX-FileCopyrightText = "Copyright (C) 2024 The Qt Company Ltd."
+SPDX-License-Identifier = "LicenseRef-Qt-Commercial OR 
GFDL-1.3-no-invariants-only"
+
+[[annotations]]
+path = ["**.toml", "licenseRule.json"]
+comment = "documentation"
+precedence = "override"
+SPDX-FileCopyrightText = "Copyright (C) 2024 The Qt Company Ltd."
+SPDX-License-Identifier = "LicenseRef-Qt-Commercial OR 
GFDL-1.3-no-invariants-only"
+
+[[annotations]]
+path = ["**/qt_attribution.json"]
+comment = "documentation"
+precedence = "override"
+SPDX-FileCopyrightText = "Copyright (C) 2024 The Qt Company Ltd."
+SPDX-License-Identifier = "LicenseRef-Qt-Commercial OR 
GFDL-1.3-no-invariants-only"
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtconnectivity-everywhere-src-6.8.1/dependencies.yaml 
new/qtconnectivity-everywhere-src-6.8.2/dependencies.yaml
--- old/qtconnectivity-everywhere-src-6.8.1/dependencies.yaml   2024-11-21 
04:34:01.000000000 +0100
+++ new/qtconnectivity-everywhere-src-6.8.2/dependencies.yaml   2025-01-24 
10:12:03.000000000 +0100
@@ -1,7 +1,7 @@
 dependencies:
   ../qtbase:
-    ref: 0db4321f2f13c6870283f3fcc0f1a462fd7cf663
+    ref: f1136de66638060b8a1ab9bc0cdf1a91dcb5ec01
     required: true
   ../qtdeclarative:
-    ref: b34fca34941ecdbf99819bbf58b45332ac9e6fa7
+    ref: 75534f3e7fff24ed7ccb364e2ed9950a73da879f
     required: false
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/qtconnectivity-everywhere-src-6.8.1/dist/REUSE.toml 
new/qtconnectivity-everywhere-src-6.8.2/dist/REUSE.toml
--- old/qtconnectivity-everywhere-src-6.8.1/dist/REUSE.toml     1970-01-01 
01:00:00.000000000 +0100
+++ new/qtconnectivity-everywhere-src-6.8.2/dist/REUSE.toml     2025-01-24 
10:12:03.000000000 +0100
@@ -0,0 +1,8 @@
+version = 1
+
+[[annotations]]
+path = ["*"]
+precedence = "override"
+comment = "Licensed as documentation."
+SPDX-FileCopyrightText = "Copyright (C) 2024 The Qt Company Ltd."
+SPDX-License-Identifier = "LicenseRef-Qt-Commercial OR 
GFDL-1.3-no-invariants-only"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtconnectivity-everywhere-src-6.8.1/examples/bluetooth/shared/Info.cmake.ios.plist
 
new/qtconnectivity-everywhere-src-6.8.2/examples/bluetooth/shared/Info.cmake.ios.plist
--- 
old/qtconnectivity-everywhere-src-6.8.1/examples/bluetooth/shared/Info.cmake.ios.plist
      2024-11-21 04:34:01.000000000 +0100
+++ 
new/qtconnectivity-everywhere-src-6.8.2/examples/bluetooth/shared/Info.cmake.ios.plist
      2025-01-24 10:12:03.000000000 +0100
@@ -10,6 +10,10 @@
     <string>${MACOSX_BUNDLE_GUI_IDENTIFIER}</string>
     <key>CFBundleExecutable</key>
     <string>${MACOSX_BUNDLE_EXECUTABLE_NAME}</string>
+    <key>CFBundleName</key>
+    <string>${MACOSX_BUNDLE_BUNDLE_NAME}</string>
+    <key>CFBundleDisplayName</key>
+    <string>${QT_INTERNAL_DOLLAR_VAR}{PRODUCT_NAME}</string>
     <key>CFBundleVersion</key>
     <string>0.0.1</string>
     <key>CFBundleShortVersionString</key>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtconnectivity-everywhere-src-6.8.1/examples/nfc/ndefeditor/icons/ndefeditor/REUSE.toml
 
new/qtconnectivity-everywhere-src-6.8.2/examples/nfc/ndefeditor/icons/ndefeditor/REUSE.toml
--- 
old/qtconnectivity-everywhere-src-6.8.1/examples/nfc/ndefeditor/icons/ndefeditor/REUSE.toml
 1970-01-01 01:00:00.000000000 +0100
+++ 
new/qtconnectivity-everywhere-src-6.8.2/examples/nfc/ndefeditor/icons/ndefeditor/REUSE.toml
 2025-01-24 10:12:03.000000000 +0100
@@ -0,0 +1,7 @@
+version = 1
+
+[[annotations]]
+path = ["20x20/*", "20x20@2/*", "20x20@3/*", "20x20@4/*"]
+precedence = "closest"
+SPDX-FileCopyrightText = "Copyright 2018 Google, Inc. All Rights Reserved."
+SPDX-License-Identifier = "Apache-2.0"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/qtconnectivity-everywhere-src-6.8.1/licenseRule.json 
new/qtconnectivity-everywhere-src-6.8.2/licenseRule.json
--- old/qtconnectivity-everywhere-src-6.8.1/licenseRule.json    2024-11-21 
04:34:01.000000000 +0100
+++ new/qtconnectivity-everywhere-src-6.8.2/licenseRule.json    2025-01-24 
10:12:03.000000000 +0100
@@ -88,6 +88,11 @@
                 "comment" : "Default",
                 "file type" : "build system",
                 "spdx" : ["BSD-3-Clause"]
+            },
+            "src/bluetooth/bluez/generate" : {
+                "comment" : "Default",
+                "file type" : "build system",
+                "spdx" : ["BSD-3-Clause"]
             }
         }
     }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtconnectivity-everywhere-src-6.8.1/src/android/bluetooth/src/org/qtproject/qt/android/bluetooth/QtBluetoothGattCharacteristic.java
 
new/qtconnectivity-everywhere-src-6.8.2/src/android/bluetooth/src/org/qtproject/qt/android/bluetooth/QtBluetoothGattCharacteristic.java
--- 
old/qtconnectivity-everywhere-src-6.8.1/src/android/bluetooth/src/org/qtproject/qt/android/bluetooth/QtBluetoothGattCharacteristic.java
     2024-11-21 04:34:01.000000000 +0100
+++ 
new/qtconnectivity-everywhere-src-6.8.2/src/android/bluetooth/src/org/qtproject/qt/android/bluetooth/QtBluetoothGattCharacteristic.java
     2025-01-24 10:12:03.000000000 +0100
@@ -23,6 +23,7 @@
     // be somewhat complicated. This should be safe as all accesses to this 
class are synchronized.
     // For clarity: For API levels below 33 we still need to use the 
setValue() of the base class
     // because Android internally uses getValue() with APIs below 33.
+    @SuppressWarnings("deprecation")
     boolean setLocalValue(byte[] value) {
         if (Build.VERSION.SDK_INT >= 33) {
             m_localValue = value;
@@ -32,6 +33,7 @@
         }
     }
 
+    @SuppressWarnings("deprecation")
     byte[] getLocalValue()
     {
         if (Build.VERSION.SDK_INT >= 33)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtconnectivity-everywhere-src-6.8.1/src/android/bluetooth/src/org/qtproject/qt/android/bluetooth/QtBluetoothGattDescriptor.java
 
new/qtconnectivity-everywhere-src-6.8.2/src/android/bluetooth/src/org/qtproject/qt/android/bluetooth/QtBluetoothGattDescriptor.java
--- 
old/qtconnectivity-everywhere-src-6.8.1/src/android/bluetooth/src/org/qtproject/qt/android/bluetooth/QtBluetoothGattDescriptor.java
 2024-11-21 04:34:01.000000000 +0100
+++ 
new/qtconnectivity-everywhere-src-6.8.2/src/android/bluetooth/src/org/qtproject/qt/android/bluetooth/QtBluetoothGattDescriptor.java
 2025-01-24 10:12:03.000000000 +0100
@@ -18,6 +18,7 @@
     // be somewhat complicated. This should be safe as all accesses to this 
class are synchronized.
     // For clarity: For API levels below 33 we still need to use the 
setValue() of the base class
     // because Android internally uses getValue() with APIs below 33.
+    @SuppressWarnings("deprecation")
     boolean setLocalValue(byte[] value) {
         if (Build.VERSION.SDK_INT >= 33) {
             m_localValue = value;
@@ -27,6 +28,7 @@
         }
     }
 
+    @SuppressWarnings("deprecation")
     byte[] getLocalValue()
     {
         if (Build.VERSION.SDK_INT >= 33)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtconnectivity-everywhere-src-6.8.1/src/android/bluetooth/src/org/qtproject/qt/android/bluetooth/QtBluetoothLE.java
 
new/qtconnectivity-everywhere-src-6.8.2/src/android/bluetooth/src/org/qtproject/qt/android/bluetooth/QtBluetoothLE.java
--- 
old/qtconnectivity-everywhere-src-6.8.1/src/android/bluetooth/src/org/qtproject/qt/android/bluetooth/QtBluetoothLE.java
     2024-11-21 04:34:01.000000000 +0100
+++ 
new/qtconnectivity-everywhere-src-6.8.2/src/android/bluetooth/src/org/qtproject/qt/android/bluetooth/QtBluetoothLE.java
     2025-01-24 10:12:03.000000000 +0100
@@ -47,7 +47,7 @@
     private BluetoothGatt mBluetoothGatt = null;
     private HandlerThread mHandlerThread = null;
     private Handler mHandler = null;
-    private Constructor mCharacteristicConstructor = null;
+    private Constructor<BluetoothGattCharacteristic> 
mCharacteristicConstructor = null;
     private String mRemoteGattAddress;
     private final UUID clientCharacteristicUuid = 
UUID.fromString("00002902-0000-1000-8000-00805f9b34fb");
     private final int MAX_MTU = 512;
@@ -113,7 +113,7 @@
         if (mBluetoothGatt == null)
             return;
 
-        final BluetoothDevice device = 
intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
+        final BluetoothDevice device = getDevice(intent);
         if (device == null || 
!device.getAddress().equals(mBluetoothGatt.getDevice().getAddress()))
             return;
 
@@ -155,6 +155,15 @@
         }
     }
 
+    @SuppressWarnings("deprecation")
+    private static BluetoothDevice getDevice(Intent intent)
+    {
+        if (Build.VERSION.SDK_INT >= 33)
+            return intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE, 
BluetoothDevice.class);
+
+        return intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
+    }
+
     private class BondStateBroadcastReceiver extends BroadcastReceiver {
         @Override
         public void onReceive(Context context, Intent intent) {
@@ -659,8 +668,9 @@
 
         }
 
-        @Override
         // API < 33
+        @Override
+        @SuppressWarnings("deprecation")
         public void onCharacteristicRead(android.bluetooth.BluetoothGatt gatt,
                                          
android.bluetooth.BluetoothGattCharacteristic characteristic,
                                          int status)
@@ -669,8 +679,8 @@
             handleOnCharacteristicRead(gatt, characteristic, 
characteristic.getValue(), status);
         }
 
-        @Override
         // API >= 33
+        @Override
         public void onCharacteristicRead(android.bluetooth.BluetoothGatt gatt,
                                     
android.bluetooth.BluetoothGattCharacteristic characteristic,
                                     byte[] value,
@@ -692,6 +702,7 @@
 
         // API < 33
         @Override
+        @SuppressWarnings("deprecation")
         public void onCharacteristicChanged(android.bluetooth.BluetoothGatt 
gatt,
                                             
android.bluetooth.BluetoothGattCharacteristic characteristic)
         {
@@ -712,6 +723,7 @@
 
         // API < 33
         @Override
+        @SuppressWarnings("deprecation")
         public void onDescriptorRead(android.bluetooth.BluetoothGatt gatt,
                                      android.bluetooth.BluetoothGattDescriptor 
descriptor,
                                      int status)
@@ -816,7 +828,7 @@
             handlerThread.start();
             mHandler = new Handler(handlerThread.getLooper());
 
-            Class[] args = new Class[6];
+            Class<?>[] args = new Class<?>[6];
             args[0] = android.content.Context.class;
             args[1] = boolean.class;
             args[2] = android.bluetooth.BluetoothGattCallback.class;
@@ -846,7 +858,7 @@
             try {
                 //This API element is currently: greylist-max-o (API level 
27), reflection, allowed
                 //It may change in the future
-                Class[] constr_args = new Class[5];
+                Class<?>[] constr_args = new Class<?>[5];
                 constr_args[0] = android.bluetooth.BluetoothGattService.class;
                 constr_args[1] = java.util.UUID.class;
                 constr_args[2] = int.class;
@@ -1643,14 +1655,40 @@
 
     private BluetoothGattCharacteristic 
cloneChararacteristic(BluetoothGattCharacteristic other) {
         try {
-            return (BluetoothGattCharacteristic) 
mCharacteristicConstructor.newInstance(other.getService(),
-                    other.getUuid(), other.getInstanceId(), 
other.getProperties(), other.getPermissions());
+            return mCharacteristicConstructor.newInstance(other.getService(), 
other.getUuid(),
+                        other.getInstanceId(), other.getProperties(), 
other.getPermissions());
         } catch (Exception ex) {
             Log.w(TAG, "Cloning characteristic failed!" + ex);
             return null;
         }
     }
 
+    // API level < 33
+    @SuppressWarnings("deprecation")
+    private boolean executeCharacteristicWriteJob(ReadWriteJob nextJob) {
+        if (mHandler != null || mCharacteristicConstructor == null) {
+            if (nextJob.entry.characteristic.getWriteType() != 
nextJob.requestedWriteType) {
+                
nextJob.entry.characteristic.setWriteType(nextJob.requestedWriteType);
+            }
+            return !nextJob.entry.characteristic.setValue(nextJob.newValue)
+                   || 
!mBluetoothGatt.writeCharacteristic(nextJob.entry.characteristic);
+        } else {
+            BluetoothGattCharacteristic orig = nextJob.entry.characteristic;
+            BluetoothGattCharacteristic tmp = cloneChararacteristic(orig);
+            if (tmp == null)
+                return true;
+            tmp.setWriteType(nextJob.requestedWriteType);
+            return !tmp.setValue(nextJob.newValue) || 
!mBluetoothGatt.writeCharacteristic(tmp);
+        }
+    }
+
+    // API level < 33
+    @SuppressWarnings("deprecation")
+    private boolean executeDescriptorWriteJob(ReadWriteJob nextJob) {
+        return !nextJob.entry.descriptor.setValue(nextJob.newValue)
+                || !mBluetoothGatt.writeDescriptor(nextJob.entry.descriptor);
+    }
+
     // Returns true if nextJob should be skipped.
     private boolean executeWriteJob(ReadWriteJob nextJob)
     {
@@ -1662,20 +1700,7 @@
                        nextJob.entry.characteristic, nextJob.newValue, 
nextJob.requestedWriteType);
                     return (writeResult != BluetoothStatusCodes.SUCCESS);
                 }
-                if (mHandler != null || mCharacteristicConstructor == null) {
-                    if (nextJob.entry.characteristic.getWriteType() != 
nextJob.requestedWriteType) {
-                        
nextJob.entry.characteristic.setWriteType(nextJob.requestedWriteType);
-                    }
-                    result = 
nextJob.entry.characteristic.setValue(nextJob.newValue);
-                    return !result || 
!mBluetoothGatt.writeCharacteristic(nextJob.entry.characteristic);
-                } else {
-                    BluetoothGattCharacteristic orig = 
nextJob.entry.characteristic;
-                    BluetoothGattCharacteristic tmp = 
cloneChararacteristic(orig);
-                    if (tmp == null)
-                        return true;
-                    tmp.setWriteType(nextJob.requestedWriteType);
-                    return !tmp.setValue(nextJob.newValue) || 
!mBluetoothGatt.writeCharacteristic(tmp);
-                }
+                return executeCharacteristicWriteJob(nextJob);
             case Descriptor:
                 if 
(nextJob.entry.descriptor.getUuid().compareTo(clientCharacteristicUuid) == 0) {
                         /*
@@ -1718,11 +1743,7 @@
                                         nextJob.entry.descriptor, 
nextJob.newValue);
                     return (writeResult != BluetoothStatusCodes.SUCCESS);
                 }
-                result = nextJob.entry.descriptor.setValue(nextJob.newValue);
-                if (!result || 
!mBluetoothGatt.writeDescriptor(nextJob.entry.descriptor))
-                    return true;
-
-                break;
+                return executeDescriptorWriteJob(nextJob);
             case Service:
             case CharacteristicValue:
                 return true;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtconnectivity-everywhere-src-6.8.1/src/android/bluetooth/src/org/qtproject/qt/android/bluetooth/QtBluetoothLEServer.java
 
new/qtconnectivity-everywhere-src-6.8.2/src/android/bluetooth/src/org/qtproject/qt/android/bluetooth/QtBluetoothLEServer.java
--- 
old/qtconnectivity-everywhere-src-6.8.1/src/android/bluetooth/src/org/qtproject/qt/android/bluetooth/QtBluetoothLEServer.java
       2024-11-21 04:34:01.000000000 +0100
+++ 
new/qtconnectivity-everywhere-src-6.8.2/src/android/bluetooth/src/org/qtproject/qt/android/bluetooth/QtBluetoothLEServer.java
       2025-01-24 10:12:03.000000000 +0100
@@ -806,6 +806,15 @@
         }
     }
 
+    // API-level < 33
+    @SuppressWarnings("deprecation")
+    private void notifyCharacteristicChange(BluetoothDevice device,
+                                            BluetoothGattCharacteristic 
characteristic,
+                                            boolean confirm)
+    {
+        mGattServer.notifyCharacteristicChanged(device, characteristic, 
confirm);
+    }
+
     /*
         Check the client characteristics configuration for the given 
characteristic
         and sends notifications or indications as per required.
@@ -832,7 +841,7 @@
                         mGattServer.notifyCharacteristicChanged(device, 
characteristic, false,
                                   
((QtBluetoothGattCharacteristic)characteristic).getLocalValue());
                     } else {
-                        mGattServer.notifyCharacteristicChanged(device, 
characteristic, false);
+                        notifyCharacteristicChange(device, characteristic, 
false);
                     }
                 } else if (Arrays.equals(clientCharacteristicConfig,
                                          
BluetoothGattDescriptor.ENABLE_INDICATION_VALUE)) {
@@ -840,7 +849,7 @@
                         mGattServer.notifyCharacteristicChanged(device, 
characteristic, true,
                                   
((QtBluetoothGattCharacteristic)characteristic).getLocalValue());
                     } else {
-                        mGattServer.notifyCharacteristicChanged(device, 
characteristic, true);
+                        notifyCharacteristicChange(device, characteristic, 
true);
                     }
                 }
             }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtconnectivity-everywhere-src-6.8.1/src/android/nfc/src/org/qtproject/qt/android/nfc/QtNfc.java
 
new/qtconnectivity-everywhere-src-6.8.2/src/android/nfc/src/org/qtproject/qt/android/nfc/QtNfc.java
--- 
old/qtconnectivity-everywhere-src-6.8.1/src/android/nfc/src/org/qtproject/qt/android/nfc/QtNfc.java
 2024-11-21 04:34:01.000000000 +0100
+++ 
new/qtconnectivity-everywhere-src-6.8.2/src/android/nfc/src/org/qtproject/qt/android/nfc/QtNfc.java
 2025-01-24 10:12:03.000000000 +0100
@@ -11,6 +11,7 @@
 import android.content.Intent;
 import android.content.IntentFilter;
 import android.nfc.NfcAdapter;
+import android.nfc.Tag;
 import android.content.IntentFilter.MalformedMimeTypeException;
 import android.os.Build;
 import android.os.Parcelable;
@@ -140,8 +141,12 @@
         }
     }
 
+    @SuppressWarnings("deprecation")
     static Parcelable getTag(Intent intent)
     {
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU)
+            return intent.getParcelableExtra(NfcAdapter.EXTRA_TAG, Tag.class);
+
         return intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
     }
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtconnectivity-everywhere-src-6.8.1/src/bluetooth/bluez/REUSE.toml 
new/qtconnectivity-everywhere-src-6.8.2/src/bluetooth/bluez/REUSE.toml
--- old/qtconnectivity-everywhere-src-6.8.1/src/bluetooth/bluez/REUSE.toml      
1970-01-01 01:00:00.000000000 +0100
+++ new/qtconnectivity-everywhere-src-6.8.2/src/bluetooth/bluez/REUSE.toml      
2025-01-24 10:12:03.000000000 +0100
@@ -0,0 +1,8 @@
+version = 1
+
+[[annotations]]
+path = ["**"]
+precedence = "closest"
+comment = "some generated files have no license in file"
+SPDX-FileCopyrightText = "Copyright (C) 2024 The Qt Company Ltd."
+SPDX-License-Identifier = "LicenseRef-Qt-Commercial OR LGPL-3.0-only OR 
GPL-2.0-only OR GPL-3.0-only"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtconnectivity-everywhere-src-6.8.1/src/bluetooth/bluez/generate 
new/qtconnectivity-everywhere-src-6.8.2/src/bluetooth/bluez/generate
--- old/qtconnectivity-everywhere-src-6.8.1/src/bluetooth/bluez/generate        
2024-11-21 04:34:01.000000000 +0100
+++ new/qtconnectivity-everywhere-src-6.8.2/src/bluetooth/bluez/generate        
2025-01-24 10:12:03.000000000 +0100
@@ -1,4 +1,6 @@
 #!/bin/sh
+# Copyright (C) 2024 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
 
 QGLOBAL_P_H=QtCore/private/qglobal_p.h
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtconnectivity-everywhere-src-6.8.1/src/bluetooth/qbluetoothdevicediscoveryagent_winrt.cpp
 
new/qtconnectivity-everywhere-src-6.8.2/src/bluetooth/qbluetoothdevicediscoveryagent_winrt.cpp
--- 
old/qtconnectivity-everywhere-src-6.8.1/src/bluetooth/qbluetoothdevicediscoveryagent_winrt.cpp
      2024-11-21 04:34:01.000000000 +0100
+++ 
new/qtconnectivity-everywhere-src-6.8.2/src/bluetooth/qbluetoothdevicediscoveryagent_winrt.cpp
      2025-01-24 10:12:03.000000000 +0100
@@ -73,16 +73,16 @@
             if (dataType == 0x16) {
                 Q_ASSERT(bufferData.size() >= 2);
                 
ret.insert(QBluetoothUuid(qFromLittleEndian<quint16>(bufferData.constData())),
-                           bufferData + 2);
+                           bufferData.right(bufferData.length() - 2));
             } else if (dataType == 0x20) {
                 Q_ASSERT(bufferData.size() >= 4);
                 
ret.insert(QBluetoothUuid(qFromLittleEndian<quint32>(bufferData.constData())),
-                           bufferData + 4);
+                           bufferData.right(bufferData.length() - 4));
             } else if (dataType == 0x21) {
                 Q_ASSERT(bufferData.size() >= 16);
                 ret.insert(QBluetoothUuid(qToBigEndian<QUuid::Id128Bytes>(
                                    
qFromLittleEndian<QUuid::Id128Bytes>(bufferData.constData()))),
-                           bufferData + 16);
+                           bufferData.right(bufferData.length() - 16));
             }
         }
     }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtconnectivity-everywhere-src-6.8.1/src/bluetooth/qbluetoothservicediscoveryagent.cpp
 
new/qtconnectivity-everywhere-src-6.8.2/src/bluetooth/qbluetoothservicediscoveryagent.cpp
--- 
old/qtconnectivity-everywhere-src-6.8.1/src/bluetooth/qbluetoothservicediscoveryagent.cpp
   2024-11-21 04:34:01.000000000 +0100
+++ 
new/qtconnectivity-everywhere-src-6.8.2/src/bluetooth/qbluetoothservicediscoveryagent.cpp
   2025-01-24 10:12:03.000000000 +0100
@@ -337,8 +337,9 @@
         break;
     case QBluetoothServiceDiscoveryAgentPrivate::ServiceDiscovery:
         d->stopServiceDiscovery();
+        break;
     default:
-        ;
+        break;
     }
 
     d->discoveredDevices.clear();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtconnectivity-everywhere-src-6.8.1/src/bluetooth/qlowenergyadvertisingdata.cpp
 
new/qtconnectivity-everywhere-src-6.8.2/src/bluetooth/qlowenergyadvertisingdata.cpp
--- 
old/qtconnectivity-everywhere-src-6.8.1/src/bluetooth/qlowenergyadvertisingdata.cpp
 2024-11-21 04:34:01.000000000 +0100
+++ 
new/qtconnectivity-everywhere-src-6.8.2/src/bluetooth/qlowenergyadvertisingdata.cpp
 2025-01-24 10:12:03.000000000 +0100
@@ -123,6 +123,9 @@
 /*!
    Sets the manufacturer id and data. The \a id parameter is a company 
identifier as assigned
    by the Bluetooth SIG. The \a data parameter is an arbitrary value.
+
+    \note \macos and iOS do not support advertising of manufacturer id or data,
+    so the provided parameters will be ignored on these platforms.
  */
 void QLowEnergyAdvertisingData::setManufacturerData(quint16 id, const 
QByteArray &data)
 {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtconnectivity-everywhere-src-6.8.1/src/bluetooth/qlowenergycontroller_bluez.cpp
 
new/qtconnectivity-everywhere-src-6.8.2/src/bluetooth/qlowenergycontroller_bluez.cpp
--- 
old/qtconnectivity-everywhere-src-6.8.1/src/bluetooth/qlowenergycontroller_bluez.cpp
        2024-11-21 04:34:01.000000000 +0100
+++ 
new/qtconnectivity-everywhere-src-6.8.2/src/bluetooth/qlowenergycontroller_bluez.cpp
        2025-01-24 10:12:03.000000000 +0100
@@ -64,14 +64,15 @@
 
 const int maxPrepareQueueSize = 1024;
 
-static void dumpErrorInformation(const QByteArray &response)
+/* returns false if the format is incorrect */
+static bool dumpErrorInformation(const QByteArray &response)
 {
     const char *data = response.constData();
     if (response.size() != 5
         || (static_cast<QBluezConst::AttCommand>(data[0])
             != QBluezConst::AttCommand::ATT_OP_ERROR_RESPONSE)) {
         qCWarning(QT_BT_BLUEZ) << QLatin1String("Not a valid error response");
-        return;
+        return false;
     }
 
     QBluezConst::AttCommand lastCommand = 
static_cast<QBluezConst::AttCommand>(data[1]);
@@ -126,6 +127,8 @@
 
     qCDebug(QT_BT_BLUEZ) << "Error:" << errorCode << "Error description:" << 
errorString
                          << "last command:" << lastCommand << "handle:" << 
handle;
+
+    return true;
 }
 
 static int getUuidSize(const QBluetoothUuid &uuid)
@@ -903,6 +906,7 @@
 {
     Q_ASSERT(charData);
     Q_ASSERT(data);
+    Q_ASSERT(elementLength >= 5);
 
     QLowEnergyHandle attributeHandle = bt_get_le16(&data[0]);
     charData->properties =
@@ -912,7 +916,7 @@
     // Bluetooth LE data comes as little endian
     if (elementLength == 7) // 16 bit uuid
         charData->uuid = QBluetoothUuid(bt_get_le16(&data[5]));
-    else
+    else if (elementLength == 21) // 128 bit uuid
         charData->uuid = QUuid::fromBytes(&data[5], QSysInfo::LittleEndian);
 
     qCDebug(QT_BT_BLUEZ) << "Found handle:" << Qt::hex << attributeHandle
@@ -929,6 +933,7 @@
 {
     Q_ASSERT(foundServices);
     Q_ASSERT(data);
+    Q_ASSERT(elementLength >= 6);
 
     QLowEnergyHandle attributeHandle = bt_get_le16(&data[0]);
 
@@ -938,9 +943,14 @@
     // data[2] -> included service start handle
     // data[4] -> included service end handle
 
+    // TODO: Spec v. 5.3, Vol. 3, Part G, 4.5.1 mentions that only
+    // 16-bit UUID can be returned here. If the UUID is 128-bit,
+    // then it is omitted from the response, and should be requested
+    // separately with the ATT_READ_REQ command.
+
     if (elementLength == 8) //16 bit uuid
         foundServices->append(QBluetoothUuid(bt_get_le16(&data[6])));
-    else
+    else if (elementLength == 22) // 128 bit uuid
         foundServices->append(QUuid::fromBytes(&data[6], 
QSysInfo::LittleEndian));
 
     qCDebug(QT_BT_BLUEZ) << "Found included service: " << Qt::hex
@@ -949,17 +959,29 @@
     return attributeHandle;
 }
 
+Q_DECL_COLD_FUNCTION
+static void reportMalformedData(QBluezConst::AttCommand cmd, const QByteArray 
&response)
+{
+    qCDebug(QT_BT_BLUEZ, "%s malformed data: %s", qt_getEnumName(cmd),
+            response.toHex().constData());
+}
+
 void QLowEnergyControllerPrivateBluez::processReply(
         const Request &request, const QByteArray &response)
 {
     Q_Q(QLowEnergyController);
 
+    // We already have an isEmpty() check at the only calling site that reads
+    // incoming data, so Q_ASSERT is enough.
+    Q_ASSERT(!response.isEmpty());
+
     QBluezConst::AttCommand command = 
static_cast<QBluezConst::AttCommand>(response.constData()[0]);
 
     bool isErrorResponse = false;
     // if error occurred 2. byte is previous request type
     if (command == QBluezConst::AttCommand::ATT_OP_ERROR_RESPONSE) {
-        dumpErrorInformation(response);
+        if (!dumpErrorInformation(response))
+            return;
         command = 
static_cast<QBluezConst::AttCommand>(response.constData()[1]);
         isErrorResponse = true;
     }
@@ -972,6 +994,10 @@
         if (isErrorResponse) {
             mtuSize = ATT_DEFAULT_LE_MTU;
         } else {
+            if (response.size() < 3) {
+                reportMalformedData(command, response);
+                break;
+            }
             const char *data = response.constData();
             quint16 mtu = bt_get_le16(&data[1]);
             mtuSize = mtu;
@@ -1000,8 +1026,15 @@
             break;
         }
 
+        // response[1] == elementLength. According to the spec it should be
+        // at least 4 bytes. See Spec v5.3, Vol 3, Part F, 3.4.4.10
+        if (response.size() < 2 || response[1] < 4) {
+            reportMalformedData(command, response);
+            break;
+        }
+
         QLowEnergyHandle start = 0, end = 0;
-        const quint16 elementLength = response.constData()[1];
+        const quint16 elementLength = response.constData()[1]; // value 
checked above
         const quint16 numElements = (response.size() - 2) / elementLength;
         quint16 offset = 2;
         const char *data = response.constData();
@@ -1077,16 +1110,25 @@
         }
 
         /* packet format:
-         * if GATT_CHARACTERISTIC discovery
+         * if GATT_CHARACTERISTIC discovery (Spec 5.3, Vol. 3, Part G, 4.6)
          *      <opcode><elementLength>
          *          [<handle><property><charHandle><uuid>]+
+         * The minimum elementLength is 7 bytes (uuid is always included)
          *
-         * if GATT_INCLUDE discovery
+         * if GATT_INCLUDE discovery (Spec 5.3, Vol. 3, Part G, 4.5.1)
          *      <opcode><elementLength>
          *          [<handle><startHandle_included><endHandle_included><uuid>]+
+         *  The minimum elementLength is 6 bytes (uuid can be omitted).
          *
          *  The uuid can be 16 or 128 bit.
          */
+
+        const quint8 minimumElementLength = attributeType == 
GATT_CHARACTERISTIC ? 7 : 6;
+        if (response.size() < 2 || response[1] < minimumElementLength) {
+            reportMalformedData(command, response);
+            break;
+        }
+
         QLowEnergyHandle lastHandle;
         const quint16 elementLength = response.constData()[1];
         const quint16 numElements = (response.size() - 2) / elementLength;
@@ -1283,6 +1325,12 @@
             break;
         }
 
+        // Spec 5.3, Vol. 3, Part F, 3.4.3.2
+        if (response.size() < 6) {
+            reportMalformedData(command, response);
+            break;
+        }
+
         const quint8 format = response[1];
         quint16 elementLength;
         switch (format) {
@@ -1720,9 +1768,18 @@
 
 void QLowEnergyControllerPrivateBluez::processUnsolicitedReply(const 
QByteArray &payload)
 {
+    Q_ASSERT(!payload.isEmpty());
+
     const char *data = payload.constData();
-    bool isNotification = (static_cast<QBluezConst::AttCommand>(data[0])
+    const auto command = static_cast<QBluezConst::AttCommand>(data[0]);
+    bool isNotification = (command
                            == 
QBluezConst::AttCommand::ATT_OP_HANDLE_VAL_NOTIFICATION);
+
+    if (payload.size() < 3) {
+        reportMalformedData(command, payload);
+        return;
+    }
+
     const QLowEnergyHandle changedHandle = bt_get_le16(&data[1]);
 
     if (QT_BT_BLUEZ().isDebugEnabled()) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtconnectivity-everywhere-src-6.8.1/src/bluetooth/qlowenergycontroller_bluezdbus.cpp
 
new/qtconnectivity-everywhere-src-6.8.2/src/bluetooth/qlowenergycontroller_bluezdbus.cpp
--- 
old/qtconnectivity-everywhere-src-6.8.1/src/bluetooth/qlowenergycontroller_bluezdbus.cpp
    2024-11-21 04:34:01.000000000 +0100
+++ 
new/qtconnectivity-everywhere-src-6.8.2/src/bluetooth/qlowenergycontroller_bluezdbus.cpp
    2025-01-24 10:12:03.000000000 +0100
@@ -1491,7 +1491,7 @@
 void QLowEnergyControllerPrivateBluezDBus::requestConnectionUpdate(
                     const QLowEnergyConnectionParameters & /* params */)
 {
-    qCWarning(QT_BT_BLUEZ) << "Connection udpate requests not supported on 
Bluez DBus";
+    qCWarning(QT_BT_BLUEZ) << "Connection update requests not supported on 
Bluez DBus";
 }
 
 void QLowEnergyControllerPrivateBluezDBus::addToGenericAttributeList(
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtconnectivity-everywhere-src-6.8.1/src/bluetooth/qlowenergycontroller_winrt.cpp
 
new/qtconnectivity-everywhere-src-6.8.2/src/bluetooth/qlowenergycontroller_winrt.cpp
--- 
old/qtconnectivity-everywhere-src-6.8.1/src/bluetooth/qlowenergycontroller_winrt.cpp
        2024-11-21 04:34:01.000000000 +0100
+++ 
new/qtconnectivity-everywhere-src-6.8.2/src/bluetooth/qlowenergycontroller_winrt.cpp
        2025-01-24 10:12:03.000000000 +0100
@@ -307,10 +307,7 @@
                                                     
QWinRTFunctions::ProcessMainThreadEvents, 5000,
                                                     exitCondition);
                         WARN_AND_CONTINUE_IF_FAILED(hr, "Could not await 
descriptor read result")
-                        if (descData.uuid == 
QBluetoothUuid::DescriptorType::CharacteristicUserDescription)
-                            descData.value = 
byteArrayFromGattResult(readResult, true);
-                        else
-                            descData.value = 
byteArrayFromGattResult(readResult);
+                        descData.value = byteArrayFromGattResult(readResult);
                     }
                 }
                 charData.descriptorList.insert(descHandle, descData);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtconnectivity-everywhere-src-6.8.1/src/nfc/configure.cmake 
new/qtconnectivity-everywhere-src-6.8.2/src/nfc/configure.cmake
--- old/qtconnectivity-everywhere-src-6.8.1/src/nfc/configure.cmake     
2024-11-21 04:34:01.000000000 +0100
+++ new/qtconnectivity-everywhere-src-6.8.2/src/nfc/configure.cmake     
2025-01-24 10:12:03.000000000 +0100
@@ -9,4 +9,9 @@
 
 qt_feature("neard" PUBLIC
     LABEL "Use neard to access NFC devices"
-    CONDITION LINUX AND NOT QT_FEATURE_pcsclite)
+    CONDITION LINUX AND QT_FEATURE_dbus AND NOT QT_FEATURE_pcsclite)
+
+qt_configure_add_summary_section(NAME "Qt Nfc")
+qt_configure_add_summary_entry(ARGS pcslite)
+qt_configure_add_summary_entry(ARGS neard)
+qt_configure_end_summary_section()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtconnectivity-everywhere-src-6.8.1/src/nfc/neard/REUSE.toml 
new/qtconnectivity-everywhere-src-6.8.2/src/nfc/neard/REUSE.toml
--- old/qtconnectivity-everywhere-src-6.8.1/src/nfc/neard/REUSE.toml    
1970-01-01 01:00:00.000000000 +0100
+++ new/qtconnectivity-everywhere-src-6.8.2/src/nfc/neard/REUSE.toml    
2025-01-24 10:12:03.000000000 +0100
@@ -0,0 +1,10 @@
+version = 1
+
+[[annotations]]
+path = ["org.freedesktop.dbus.objectmanager.xml",
+        "org.freedesktop.dbus.properties.xml",
+        "org.neard.Adapter.xml",
+        "org.neard.Tag.xml"]
+precedence = "closest"
+SPDX-FileCopyrightText = "Copyright (C) 2024 The Qt Company Ltd."
+SPDX-License-Identifier = "LicenseRef-Qt-Commercial OR LGPL-3.0-only OR 
GPL-2.0-only OR GPL-3.0-only"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtconnectivity-everywhere-src-6.8.1/src/nfc/qndeffilter.cpp 
new/qtconnectivity-everywhere-src-6.8.2/src/nfc/qndeffilter.cpp
--- old/qtconnectivity-everywhere-src-6.8.1/src/nfc/qndeffilter.cpp     
2024-11-21 04:34:01.000000000 +0100
+++ new/qtconnectivity-everywhere-src-6.8.2/src/nfc/qndeffilter.cpp     
2025-01-24 10:12:03.000000000 +0100
@@ -6,6 +6,7 @@
 
 #include <QtCore/QList>
 #include <QtCore/QMap>
+#include <QtCore/QVarLengthArray>
 
 QT_BEGIN_NAMESPACE
 
@@ -341,7 +342,7 @@
         mergedRecords.push_back(currentRecord);
 
         // The list contains the current number of occurrences of each record.
-        QList<unsigned int> counts(mergedRecords.size(), 0);
+        QVarLengthArray<unsigned int> counts(mergedRecords.size(), 0);
 
         // Iterate through the messages and calculate the number of 
occurrences.
         qsizetype filterIndex = 0;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtconnectivity-everywhere-src-6.8.1/src/nfc/qnearfieldtarget_ios.mm 
new/qtconnectivity-everywhere-src-6.8.2/src/nfc/qnearfieldtarget_ios.mm
--- old/qtconnectivity-everywhere-src-6.8.1/src/nfc/qnearfieldtarget_ios.mm     
2024-11-21 04:34:01.000000000 +0100
+++ new/qtconnectivity-everywhere-src-6.8.2/src/nfc/qnearfieldtarget_ios.mm     
2025-01-24 10:12:03.000000000 +0100
@@ -19,8 +19,8 @@
 
 Q_APPLICATION_STATIC(ResponseProvider, responseProvider)
 
-void ResponseProvider::provideResponse(QNearFieldTarget::RequestId requestId, 
bool success, QByteArray recvBuffer) {
-    Q_EMIT responseReceived(requestId, success, recvBuffer);
+void ResponseProvider::provideResponse(QNearFieldTarget::RequestId requestId, 
QNearFieldTarget::Error error, QByteArray recvBuffer) {
+    Q_EMIT responseReceived(requestId, error, recvBuffer);
 }
 
 void NfcDeleter::operator()(void *obj)
@@ -275,6 +275,7 @@
                 requestInProgress = QNearFieldTarget::RequestId();
                 if (errorCode == -1) {
                     connected = true;
+                    justConnected = true;
                     onExecuteRequest();
                 } else {
                     const auto requestId = queue.dequeue().first;
@@ -428,23 +429,38 @@
             QByteArray recvBuffer = QByteArray::fromNSData(responseData);
             recvBuffer += static_cast<char>(sw1);
             recvBuffer += static_cast<char>(sw2);
-            const bool success = error == nil;
-            responseProvider->provideResponse(request.first, success, 
recvBuffer);
+            auto errorToReport = QNearFieldTarget::NoError;
+            if (error != nil)
+            {
+                switch (error.code) {
+                    case 
NFCReaderError::NFCReaderTransceiveErrorSessionInvalidated:
+                    case 
NFCReaderError::NFCReaderTransceiveErrorTagNotConnected:
+                        if (justConnected) {
+                            errorToReport = 
QNearFieldTarget::UnsupportedTargetError;
+                            justConnected = false;
+                            break;
+                        }
+                        Q_FALLTHROUGH();
+                    default:
+                        errorToReport = QNearFieldTarget::CommandError;
+                }
+            }
+            responseProvider->provideResponse(request.first, errorToReport, 
recvBuffer);
         }];
     }
 }
 
-void  
QNearFieldTargetPrivateImpl::onResponseReceived(QNearFieldTarget::RequestId 
requestId, bool success, QByteArray recvBuffer)
+void  
QNearFieldTargetPrivateImpl::onResponseReceived(QNearFieldTarget::RequestId 
requestId, QNearFieldTarget::Error error, QByteArray recvBuffer)
 {
     if (requestInProgress != requestId)
         return;
 
     requestInProgress = QNearFieldTarget::RequestId();
-    if (success) {
+    if (error == QNearFieldTarget::NoError) {
         setResponseForRequest(requestId, recvBuffer, true);
         onExecuteRequest();
     } else {
-        reportError(QNearFieldTarget::CommandError, requestId);
+        reportError(error, requestId);
         invalidate();
     }
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtconnectivity-everywhere-src-6.8.1/src/nfc/qnearfieldtarget_ios_p.h 
new/qtconnectivity-everywhere-src-6.8.2/src/nfc/qnearfieldtarget_ios_p.h
--- old/qtconnectivity-everywhere-src-6.8.1/src/nfc/qnearfieldtarget_ios_p.h    
2024-11-21 04:34:01.000000000 +0100
+++ new/qtconnectivity-everywhere-src-6.8.2/src/nfc/qnearfieldtarget_ios_p.h    
2025-01-24 10:12:03.000000000 +0100
@@ -33,10 +33,10 @@
     Q_OBJECT
 
     public:
-        void provideResponse(QNearFieldTarget::RequestId requestId, bool 
success, QByteArray recvBuffer);
+        void provideResponse(QNearFieldTarget::RequestId requestId, 
QNearFieldTarget::Error error, QByteArray recvBuffer);
 
     Q_SIGNALS:
-        void responseReceived(QNearFieldTarget::RequestId requestId, bool 
success, QByteArray recvBuffer);
+        void responseReceived(QNearFieldTarget::RequestId requestId, 
QNearFieldTarget::Error error, QByteArray recvBuffer);
 };
 
 struct NfcDeleter
@@ -95,6 +95,7 @@
     bool hasNDEFMessage = false;
 
     bool connected = false;
+    bool justConnected = false;
     QTimer targetCheckTimer;
     QNearFieldTarget::RequestId requestInProgress;
     QQueue<std::pair<QNearFieldTarget::RequestId, QByteArray>> queue;
@@ -108,7 +109,7 @@
     void onTargetCheck();
     void onTargetError(QNearFieldTarget::Error error, const 
QNearFieldTarget::RequestId &id);
     void onExecuteRequest();
-    void onResponseReceived(QNearFieldTarget::RequestId requestId, bool 
success, QByteArray recvBuffer);
+    void onResponseReceived(QNearFieldTarget::RequestId requestId, 
QNearFieldTarget::Error error, QByteArray recvBuffer);
     // NDEF:
     void messageRead(const QNdefMessage &ndefMessage, 
QNearFieldTarget::RequestId request);
     void messageWritten(QNearFieldTarget::RequestId request);

Reply via email to