From 67f466505e1aed6b7f87e766141d081146b4159c Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Tue, 31 May 2016 17:33:03 -0300 Subject: Fix some QtDBus crashes during application destruction MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 Reviewed-by: Alex Blasche Reviewed-by: Oswald Buddenhagen --- src/dbus/qdbusserver.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'src/dbus/qdbusserver.cpp') 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); } -- cgit v1.2.3