diff options
author | Thiago Macieira <thiago.macieira@intel.com> | 2016-05-31 17:33:03 -0300 |
---|---|---|
committer | Jani Heikkinen <jani.heikkinen@qt.io> | 2017-05-11 08:35:33 +0000 |
commit | 67f466505e1aed6b7f87e766141d081146b4159c (patch) | |
tree | e68c90604714778b3805cdbe831fdd05f6f5ac45 /src/dbus/qdbusserver.cpp | |
parent | daeb334039e9dcc01485995f53552749131a06b7 (diff) |
Fix some QtDBus crashes during application destruction
It's possible that some code executes after QDBusConnectionManager is
destroyed and still tries to access QtDBus. Protect against such
crashes.
Change-Id: I87e17314d8b24ae983b1fffd1453c13fbd3cf48e
Reviewed-by: René J.V. Bertin <rjvbertin@gmail.com>
Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
Diffstat (limited to 'src/dbus/qdbusserver.cpp')
-rw-r--r-- | src/dbus/qdbusserver.cpp | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/src/dbus/qdbusserver.cpp b/src/dbus/qdbusserver.cpp index 027ce935d6..b1f9be2c2a 100644 --- a/src/dbus/qdbusserver.cpp +++ b/src/dbus/qdbusserver.cpp @@ -68,7 +68,11 @@ QDBusServer::QDBusServer(const QString &address, QObject *parent) if (!qdbus_loadLibDBus()) return; - emit QDBusConnectionManager::instance()->serverRequested(address, this); + QDBusConnectionManager *instance = QDBusConnectionManager::instance(); + if (!instance) + return; + + emit instance->serverRequested(address, this); QObject::connect(d, SIGNAL(newServerConnection(QDBusConnectionPrivate*)), this, SLOT(_q_newConnection(QDBusConnectionPrivate*)), Qt::QueuedConnection); } @@ -93,7 +97,11 @@ QDBusServer::QDBusServer(QObject *parent) return; } - emit QDBusConnectionManager::instance()->serverRequested(address, this); + QDBusConnectionManager *instance = QDBusConnectionManager::instance(); + if (!instance) + return; + + emit instance->serverRequested(address, this); QObject::connect(d, SIGNAL(newServerConnection(QDBusConnectionPrivate*)), this, SLOT(_q_newConnection(QDBusConnectionPrivate*)), Qt::QueuedConnection); } |