summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Griebl <robert.griebl@qt.io>2023-03-01 11:56:49 +0100
committerRobert Griebl <robert.griebl@qt.io>2023-03-02 15:09:00 +0100
commit965dc087c8c79e2a2c1b9e415009ef442b46cdd6 (patch)
treee3911139416af5d082aaffaedc8a15f53c15bbd3
parentb0434bf806532195af125e137eae7df9e3ce3742 (diff)
downloadqtapplicationmanager-965dc087c8c79e2a2c1b9e415009ef442b46cdd6.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 Pick-to: 6.5 6.5.0 Reviewed-by: Bernd Weimer <bernd.weimer@qt.io>
-rw-r--r--src/main-lib/main.cpp29
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