┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Richardson <[email protected]>2021-07-09 09:30:58 +0100
committerElvis Angelaccio <[email protected]>2021-07-10 20:18:28 +0000
commit531de16cd0703882e8972bba60c9f295c2d81277 (patch)
tree528415ea2cc50d4318938888d295b603b78f70f8
parentd284e22f8730e98336fab515a339143341f55ec1 (diff)
Avoid crashing on startup if DBus isn't running
I am trying to run Dolphin on a minimal FreeBSD CHERI-RISC-V QEMU instance and I haven't got DBus running. Without this change, I get crashes because QDBusConnection::sessionBus().interface() returns NULL if DBus isn't running.
-rw-r--r--src/dbusinterface.cpp6
-rw-r--r--src/dolphinmainwindow.cpp3
-rw-r--r--src/global.cpp3
3 files changed, 8 insertions, 4 deletions
diff --git a/src/dbusinterface.cpp b/src/dbusinterface.cpp
index 7e453f72a..2b674b968 100644
--- a/src/dbusinterface.cpp
+++ b/src/dbusinterface.cpp
@@ -20,8 +20,10 @@ DBusInterface::DBusInterface() :
{
QDBusConnection::sessionBus().registerObject(QStringLiteral("/org/freedesktop/FileManager1"), this,
QDBusConnection::ExportScriptableContents | QDBusConnection::ExportAdaptors);
- QDBusConnection::sessionBus().interface()->registerService(QStringLiteral("org.freedesktop.FileManager1"),
- QDBusConnectionInterface::QueueService);
+ QDBusConnectionInterface *sessionInterface = QDBusConnection::sessionBus().interface();
+ if (sessionInterface) {
+ sessionInterface->registerService(QStringLiteral("org.freedesktop.FileManager1"), QDBusConnectionInterface::QueueService);
+ }
}
void DBusInterface::ShowFolders(const QStringList& uriList, const QString& startUpId)
diff --git a/src/dolphinmainwindow.cpp b/src/dolphinmainwindow.cpp
index fe39d4d2f..d4c8199a6 100644
--- a/src/dolphinmainwindow.cpp
+++ b/src/dolphinmainwindow.cpp
@@ -1543,7 +1543,8 @@ void DolphinMainWindow::setupActions()
stashSplit->setToolTip(i18nc("@info", "Opens the stash virtual directory in a split window"));
stashSplit->setIcon(QIcon::fromTheme(QStringLiteral("folder-stash")));
stashSplit->setCheckable(false);
- stashSplit->setVisible(QDBusConnection::sessionBus().interface()->isServiceRegistered(QStringLiteral("org.kde.kio.StashNotifier")));
+ QDBusConnectionInterface *sessionInterface = QDBusConnection::sessionBus().interface();
+ stashSplit->setVisible(sessionInterface && sessionInterface->isServiceRegistered(QStringLiteral("org.kde.kio.StashNotifier")));
connect(stashSplit, &QAction::triggered, this, &DolphinMainWindow::toggleSplitStash);
KStandardAction::redisplay(this, &DolphinMainWindow::reloadView, actionCollection());
diff --git a/src/global.cpp b/src/global.cpp
index 197d6ec28..d217a67ec 100644
--- a/src/global.cpp
+++ b/src/global.cpp
@@ -120,7 +120,8 @@ QVector<QPair<QSharedPointer<OrgKdeDolphinMainWindowInterface>, QStringList>> Do
}
// Look for dolphin instances among all available dbus services.
- const QStringList dbusServices = QDBusConnection::sessionBus().interface()->registeredServiceNames().value();
+ QDBusConnectionInterface *sessionInterface = QDBusConnection::sessionBus().interface();
+ const QStringList dbusServices = sessionInterface ? sessionInterface->registeredServiceNames().value() : QStringList();
// Don't match the service without trailing "-" (unique instance)
const QString pattern = QStringLiteral("org.kde.dolphin-");
// Don't match the pid without leading "-"