diff options
author | Marc Mutz <marc.mutz@qt.io> | 2023-12-20 10:38:46 +0100 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2023-12-20 17:38:23 +0000 |
commit | e32daf67a6a8895101641aaf753409dd284b18d3 (patch) | |
tree | 2ad759f527c0c532928e7e7d9321a93c4c326fa3 | |
parent | ce498b9fd0a7267ab0bc39b525ded6e8bbfe5f94 (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.cpp | 6 |
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(); + } } } |