diff options
author | Robert Griebl <robert.griebl@qt.io> | 2023-03-01 11:56:49 +0100 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2023-03-03 04:50:19 +0000 |
commit | b5ca8ea15bdb87c0a697974e248a2865328de3b6 (patch) | |
tree | be93ca49d56348b5776223ba17d5e0cd0052c63d | |
parent | cc9d761a83b129520dd84f06e23fd671669b2c22 (diff) | |
download | qtapplicationmanager-b5ca8ea15bdb87c0a697974e248a2865328de3b6.tar.gz |
Fix D-Bus registration error handling
The inner try/catch block is a merge artifact and is actually
hampering correct error handling, as the exit(2) call is a no-op
before the event loop is started.
We really want all exceptions that are supposed to stop the startup
process to bubble up into setup().
Change-Id: Ic8f056346bfe927d89a21be740a9676f579cfdaa
Reviewed-by: Bernd Weimer <bernd.weimer@qt.io>
(cherry picked from commit 965dc087c8c79e2a2c1b9e415009ef442b46cdd6)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-rw-r--r-- | src/main-lib/main.cpp | 29 |
1 files changed, 12 insertions, 17 deletions
diff --git a/src/main-lib/main.cpp b/src/main-lib/main.cpp index 25966a01..2e63e88e 100644 --- a/src/main-lib/main.cpp +++ b/src/main-lib/main.cpp @@ -972,26 +972,21 @@ void Main::setupDBus(const std::function<QString(const char *)> &busForInterface } if (!noneOnly) { - try { - qCDebug(LogSystem) << "Registering D-Bus services:"; + qCDebug(LogSystem) << "Registering D-Bus services:"; - for (auto &&iface : ifaces) { - AbstractDBusContextAdaptor *dbusAdaptor = std::get<0>(iface); - QString &dbusName = std::get<1>(iface); - const char *interfaceName = std::get<4>(iface); + for (auto &&iface : ifaces) { + AbstractDBusContextAdaptor *dbusAdaptor = std::get<0>(iface); + QString &dbusName = std::get<1>(iface); + const char *interfaceName = std::get<4>(iface); - if (dbusName.isEmpty()) - continue; + if (dbusName.isEmpty()) + continue; - registerDBusObject(dbusAdaptor->generatedAdaptor(), dbusName, - std::get<2>(iface),interfaceName, std::get<3>(iface), - instanceId); - if (!DBusPolicy::add(dbusAdaptor->generatedAdaptor(), policyForInterface(interfaceName))) - throw Exception(Error::DBus, "could not set DBus policy for %1").arg(qL1S(interfaceName)); - } - } catch (const std::exception &e) { - qCCritical(LogSystem) << "ERROR:" << e.what(); - qApp->exit(2); + registerDBusObject(dbusAdaptor->generatedAdaptor(), dbusName, + std::get<2>(iface),interfaceName, std::get<3>(iface), + instanceId); + if (!DBusPolicy::add(dbusAdaptor->generatedAdaptor(), policyForInterface(interfaceName))) + throw Exception(Error::DBus, "could not set DBus policy for %1").arg(qL1S(interfaceName)); } } #else |