diff options
author | Robert Ancell <robert.ancell@canonical.com> | 2018-06-15 14:38:03 +1200 |
---|---|---|
committer | Robert Ancell <robert.ancell@gmail.com> | 2018-06-25 22:53:10 +0000 |
commit | 55d47bc83e5f346f71e246bfa51361e9bbf7f9ae (patch) | |
tree | ff54a7ffdccb75335629d9b4fbc72fab510c31b2 | |
parent | 361e7654278b9505b0bdb8e0b34557f4a4d8fe19 (diff) | |
download | gnome-control-center-55d47bc83e5f346f71e246bfa51361e9bbf7f9ae.tar.gz |
printers: Plug memory leaks
-rw-r--r-- | panels/printers/cc-printers-panel.c | 3 | ||||
-rw-r--r-- | panels/printers/pp-cups.c | 4 | ||||
-rw-r--r-- | panels/printers/pp-details-dialog.c | 1 | ||||
-rw-r--r-- | panels/printers/pp-new-printer-dialog.c | 2 | ||||
-rw-r--r-- | panels/printers/pp-options-dialog.c | 6 | ||||
-rw-r--r-- | panels/printers/pp-printer-entry.c | 22 |
6 files changed, 32 insertions, 6 deletions
diff --git a/panels/printers/cc-printers-panel.c b/panels/printers/cc-printers-panel.c index 877028863..f05a3ec6d 100644 --- a/panels/printers/cc-printers-panel.c +++ b/panels/printers/cc-printers-panel.c @@ -934,6 +934,7 @@ actualize_printers_list_cb (GObject *source_object, } g_error_free (error); + g_object_unref (cups); return; } @@ -984,6 +985,8 @@ actualize_printers_list_cb (GObject *source_object, } update_sensitivity (user_data); + + g_object_unref (cups); } static void diff --git a/panels/printers/pp-cups.c b/panels/printers/pp-cups.c index 628d8ae8a..2a716d9e4 100644 --- a/panels/printers/pp-cups.c +++ b/panels/printers/pp-cups.c @@ -77,6 +77,10 @@ _pp_cups_get_dests_thread (GTask *task, { g_task_return_pointer (task, dests, (GDestroyNotify) pp_cups_dests_free); } + else + { + pp_cups_dests_free (dests); + } } void diff --git a/panels/printers/pp-details-dialog.c b/panels/printers/pp-details-dialog.c index 7d174307b..bd15110c1 100644 --- a/panels/printers/pp-details-dialog.c +++ b/panels/printers/pp-details-dialog.c @@ -433,6 +433,7 @@ pp_details_dialog_new (GtkWindow *parent, /* Translators: This is the title of the dialog. %s is the printer name. */ title = g_strdup_printf (_("%s Details"), printer_name); gtk_label_set_label (self->dialog_title, title); + g_free (title); printer_url = g_strdup_printf ("<a href=\"http://%s:%d\">%s</a>", printer_address, ippPort (), printer_address); gtk_label_set_markup (GTK_LABEL (self->printer_address_label), printer_url); diff --git a/panels/printers/pp-new-printer-dialog.c b/panels/printers/pp-new-printer-dialog.c index 0a9431055..f7cdfd8f8 100644 --- a/panels/printers/pp-new-printer-dialog.c +++ b/panels/printers/pp-new-printer-dialog.c @@ -619,6 +619,8 @@ pp_new_printer_dialog_finalize (GObject *object) g_clear_pointer (&priv->dialog, gtk_widget_destroy); + g_clear_pointer (&priv->list, ppd_list_free); + if (priv->builder) g_clear_object (&priv->builder); diff --git a/panels/printers/pp-options-dialog.c b/panels/printers/pp-options-dialog.c index e848562c5..366808f80 100644 --- a/panels/printers/pp-options-dialog.c +++ b/panels/printers/pp-options-dialog.c @@ -269,7 +269,7 @@ string_in_table (gchar *str, #define STRING_IN_TABLE(_str, _table) (string_in_table (_str, _table, G_N_ELEMENTS (_table))) -static gchar * +static const gchar * ppd_option_name_translate (ppd_option_t *option) { gint i; @@ -277,10 +277,10 @@ ppd_option_name_translate (ppd_option_t *option) for (i = 0; i < G_N_ELEMENTS (ppd_option_translations); i++) { if (g_strcmp0 (ppd_option_translations[i].keyword, option->keyword) == 0) - return g_strdup (_(ppd_option_translations[i].translation)); + return _(ppd_option_translations[i].translation); } - return g_strdup (option->text); + return option->text; } static gint diff --git a/panels/printers/pp-printer-entry.c b/panels/printers/pp-printer-entry.c index 3e5c8ff39..74735461e 100644 --- a/panels/printers/pp-printer-entry.c +++ b/panels/printers/pp-printer-entry.c @@ -113,6 +113,22 @@ enum { static guint signals[LAST_SIGNAL] = { 0 }; +static InkLevelData * +ink_level_data_new (void) +{ + return g_slice_new0 (InkLevelData); +} + +static void +ink_level_data_free (InkLevelData *data) +{ + g_clear_pointer (&data->marker_names, g_free); + g_clear_pointer (&data->marker_levels, g_free); + g_clear_pointer (&data->marker_colors, g_free); + g_clear_pointer (&data->marker_types, g_free); + g_slice_free (InkLevelData, data); +} + static void pp_printer_entry_get_property (GObject *object, guint prop_id, @@ -160,6 +176,7 @@ static void pp_printer_entry_init (PpPrinterEntry *self) { gtk_widget_init_template (GTK_WIDGET (self)); + self->inklevel = ink_level_data_new (); } typedef struct { @@ -226,7 +243,7 @@ sanitize_printer_model (gchar *printer_make_and_model) g_free (tmp); - return g_strdup (printer_model); + return printer_model; } static gboolean @@ -797,8 +814,6 @@ pp_printer_entry_new (cups_dest_t printer, self = g_object_new (PP_PRINTER_ENTRY_TYPE, "printer-name", printer.name, NULL); - self->inklevel = g_slice_new0 (InkLevelData); - if (printer.instance) { instance = g_strdup_printf ("%s / %s", printer.name, printer.instance); @@ -1005,6 +1020,7 @@ pp_printer_entry_dispose (GObject *object) g_clear_pointer (&self->printer_location, g_free); g_clear_pointer (&self->printer_make_and_model, g_free); g_clear_pointer (&self->printer_hostname, g_free); + g_clear_pointer (&self->inklevel, ink_level_data_free); g_cancellable_cancel (self->get_jobs_cancellable); g_clear_object (&self->get_jobs_cancellable); |