summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarc Mutz <marc.mutz@qt.io>2023-12-20 10:38:46 +0100
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2023-12-20 17:38:23 +0000
commite32daf67a6a8895101641aaf753409dd284b18d3 (patch)
tree2ad759f527c0c532928e7e7d9321a93c4c326fa3
parentce498b9fd0a7267ab0bc39b525ded6e8bbfe5f94 (diff)
QConnectedReplicaImplementation: don't call deleteLater() on a nullptr
It's undefined behavior according to C++, even if you don't touch members, and only happened to work until qtbase/13074a967f18ed348ab744f7ff831965607a6421 which made it stop "working". Add an explicit nullptr check before calling deleteLater(). Amends 35dd08098f8a4b422d523792261aefe039358f6a(!). Fixes: QTBUG-120242 Pick-to: 6.5 6.2 5.15 Change-Id: I9ce95f8c8f917549ccfd0040f0cd4f483c3a28d0 Reviewed-by: Juha Vuolle <juha.vuolle@qt.io> (cherry picked from commit 4ef440b458c526ad24a3e87d480ddb44c76c6438) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit 405812b7609fbaf2be2575175fabdc4fdc77c1f7)
-rw-r--r--src/remoteobjects/qremoteobjectreplica.cpp6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/remoteobjects/qremoteobjectreplica.cpp b/src/remoteobjects/qremoteobjectreplica.cpp
index 4e53d9f..7134abf 100644
--- a/src/remoteobjects/qremoteobjectreplica.cpp
+++ b/src/remoteobjects/qremoteobjectreplica.cpp
@@ -119,8 +119,10 @@ QConnectedReplicaImplementation::~QConnectedReplicaImplementation()
sendCommand();
}
for (auto prop : m_propertyStorage) {
- if (prop.canConvert<QObject*>())
- prop.value<QObject *>()->deleteLater();
+ if (prop.canConvert<QObject*>()) {
+ if (auto o = prop.value<QObject*>())
+ o->deleteLater();
+ }
}
}