From 4a9d7bc52cff9545ee46e0017e803cb44b25f619 Mon Sep 17 00:00:00 2001 From: Matthieu Gallien Date: Thu, 4 Dec 2025 09:46:07 +0100 Subject: [PATCH] fix(linux/crash): fix crash in cloud provider integration when removing a sync folder avoid removing a ref on a GObject instance that we do not own Signed-off-by: Matthieu Gallien --- src/gui/cloudproviders/cloudproviderwrapper.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/gui/cloudproviders/cloudproviderwrapper.cpp b/src/gui/cloudproviders/cloudproviderwrapper.cpp index 023e571495c69..50966362c63ee 100644 --- a/src/gui/cloudproviders/cloudproviderwrapper.cpp +++ b/src/gui/cloudproviders/cloudproviderwrapper.cpp @@ -21,6 +21,8 @@ using namespace OCC; +Q_LOGGING_CATEGORY(lcNextcloudCloudProviderIntegration, "nextcloud.cloudprovider.integration", QtInfoMsg) + GSimpleActionGroup *actionGroup = nullptr; int CloudProviderWrapper::preferredTextWidth = 0; @@ -55,6 +57,11 @@ CloudProviderWrapper::CloudProviderWrapper(QObject *parent, Folder *folder, int g_clear_object (&action_group); } +void mainMenuWasDeleted(gpointer data, GObject *where_the_object_was) +{ + qCDebug(lcNextcloudCloudProviderIntegration) << "I was deleted" << data << where_the_object_was; +} + CloudProviderWrapper::~CloudProviderWrapper() { g_object_unref(_cloudProviderAccount); @@ -219,6 +226,8 @@ GMenuModel* CloudProviderWrapper::getMenuModel() { QString item_label; _mainMenu = g_menu_new(); + g_object_ref(_mainMenu); + g_object_weak_ref(reinterpret_cast(_mainMenu), mainMenuWasDeleted, this); section = g_menu_new(); item = addMenuItem(tr("Open website"), "cloudprovider.openwebsite");