From 95736e372a11d00f02054906e8286b6f35cf5cd3 Mon Sep 17 00:00:00 2001 From: Alessandro Bono Date: Sat, 29 Apr 2023 10:26:15 +0200 Subject: gdm-session-settings: Plug a leak Fallout from f0252728e9ef2a23b0d98a4fe2c697fdc673d254. The variable was used to free the object pointed by settings->user after replacing it. --- daemon/gdm-session-settings.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/daemon/gdm-session-settings.c b/daemon/gdm-session-settings.c index 8a09381c..87a4eb1d 100644 --- a/daemon/gdm-session-settings.c +++ b/daemon/gdm-session-settings.c @@ -338,12 +338,15 @@ gboolean gdm_session_settings_load (GdmSessionSettings *settings, const char *username) { + g_autoptr(ActUser) old_user = NULL; + g_return_val_if_fail (GDM_IS_SESSION_SETTINGS (settings), FALSE); g_return_val_if_fail (username != NULL, FALSE); g_return_val_if_fail (!gdm_session_settings_is_loaded (settings), FALSE); - if (settings->user != NULL) { - g_signal_handlers_disconnect_by_func (G_OBJECT (settings->user), + old_user = g_steal_pointer (&settings->user); + if (old_user != NULL) { + g_signal_handlers_disconnect_by_func (G_OBJECT (old_user), G_CALLBACK (on_user_is_loaded_changed), settings); } -- cgit v1.2.1