From e68a3a612397f20b41955054882a64ac2cafdbcd Mon Sep 17 00:00:00 2001 From: Marek Kasik Date: Mon, 11 Jul 2022 16:54:36 +0200 Subject: [PATCH] print: Free print backends after use Print backends loaded in GtkPrintUnixDialog's load_print_backends() are not freed later as done in e.g. GtkPageSetupUnixDialog. This commit destroys and unref those print backends. Closes #5019 --- gtk/gtkprintunixdialog.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gtk/gtkprintunixdialog.c b/gtk/gtkprintunixdialog.c index 14c15264ad..fd23cd9a89 100644 --- a/gtk/gtkprintunixdialog.c +++ b/gtk/gtkprintunixdialog.c @@ -942,6 +942,7 @@ static void gtk_print_unix_dialog_finalize (GObject *object) { GtkPrintUnixDialog *dialog = GTK_PRINT_UNIX_DIALOG (object); + GList *iter; unschedule_idle_mark_conflicts (dialog); disconnect_printer_details_request (dialog, FALSE); @@ -967,7 +968,9 @@ gtk_print_unix_dialog_finalize (GObject *object) g_clear_pointer (&dialog->waiting_for_printer, (GDestroyNotify)g_free); g_clear_pointer (&dialog->format_for_printer, (GDestroyNotify)g_free); - g_list_free (dialog->print_backends); + for (iter = dialog->print_backends; iter != NULL; iter = iter->next) + gtk_print_backend_destroy (GTK_PRINT_BACKEND (iter->data)); + g_list_free_full (dialog->print_backends, g_object_unref); dialog->print_backends = NULL; g_clear_object (&dialog->page_setup_list);