summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Ancell <robert.ancell@canonical.com>2021-02-12 15:01:43 +1300
committerRobert Ancell <robert.ancell@canonical.com>2021-02-15 10:34:32 +1300
commitd970ae48b47357ecca74dd28917e702a8234b461 (patch)
tree0ff19294eb7f6cdef9c96a135324b1a0f877ffb0
parent0d913f7283236086e041d87e244d5f803f3d8bde (diff)
downloadgnome-control-center-d970ae48b47357ecca74dd28917e702a8234b461.tar.gz
printers: Don't pass ownership in get_ppd_names_async callback
-rw-r--r--panels/printers/pp-details-dialog.c20
-rw-r--r--panels/printers/pp-utils.c33
2 files changed, 15 insertions, 38 deletions
diff --git a/panels/printers/pp-details-dialog.c b/panels/printers/pp-details-dialog.c
index 28b047234..4e5039f47 100644
--- a/panels/printers/pp-details-dialog.c
+++ b/panels/printers/pp-details-dialog.c
@@ -75,25 +75,6 @@ printer_name_changed (PpDetailsDialog *self)
gtk_label_set_label (self->dialog_title, title);
}
-static void
-ppd_names_free (gpointer user_data)
-{
- PPDName **names = (PPDName **) user_data;
- gint i;
-
- if (names)
- {
- for (i = 0; names[i]; i++)
- {
- g_free (names[i]->ppd_name);
- g_free (names[i]->ppd_display_name);
- g_free (names[i]);
- }
-
- g_free (names);
- }
-}
-
static void set_ppd_cb (const gchar *printer_name, gboolean success, gpointer user_data);
static void
@@ -114,7 +95,6 @@ get_ppd_names_cb (PPDName **names,
self->cancellable,
set_ppd_cb,
self);
- ppd_names_free (names);
}
else
{
diff --git a/panels/printers/pp-utils.c b/panels/printers/pp-utils.c
index aed1bb89d..39e31d847 100644
--- a/panels/printers/pp-utils.c
+++ b/panels/printers/pp-utils.c
@@ -1627,8 +1627,8 @@ typedef void (*GPACallback) (gchar **attribute_values,
typedef struct
{
- gchar *attribute_name;
gchar **ppds_names;
+ gchar *attribute_name;
gchar **result;
GPACallback callback;
gpointer user_data;
@@ -1655,6 +1655,8 @@ gpa_data_free (GPAData *data)
{
g_free (data->attribute_name);
g_strfreev (data->ppds_names);
+ if (data->result != NULL)
+ g_strfreev (data->result);
if (data->context)
g_main_context_unref (data->context);
g_free (data);
@@ -1825,6 +1827,16 @@ static void
gpn_data_free (GPNData *data)
{
g_free (data->printer_name);
+ if (data->result != NULL)
+ {
+ for (int i = 0; data->result[i]; i++)
+ {
+ g_free (data->result[i]->ppd_name);
+ g_free (data->result[i]->ppd_display_name);
+ g_free (data->result[i]);
+ }
+ g_free (data->result);
+ }
g_clear_object (&data->cancellable);
g_free (data);
}
@@ -1840,17 +1852,6 @@ get_ppd_names_async_cb (gchar **attribute_values,
if (g_cancellable_is_cancelled (data->cancellable))
{
- g_strfreev (attribute_values);
-
- for (i = 0; data->result[i]; i++)
- {
- g_free (data->result[i]->ppd_name);
- g_free (data->result[i]);
- }
-
- g_free (data->result);
- data->result = NULL;
-
data->callback (NULL,
data->printer_name,
TRUE,
@@ -1861,9 +1862,7 @@ get_ppd_names_async_cb (gchar **attribute_values,
if (attribute_values)
{
for (i = 0; attribute_values[i]; i++)
- data->result[i]->ppd_display_name = attribute_values[i];
-
- g_free (attribute_values);
+ data->result[i]->ppd_display_name = g_strdup (attribute_values[i]);
}
data->callback (data->result,
@@ -1956,7 +1955,7 @@ get_ppd_names_async_dbus_scb (GObject *source_object,
if (result)
{
- gchar **ppds_names;
+ g_auto(GStrv) ppds_names = NULL;
data->result = result;
@@ -1969,8 +1968,6 @@ get_ppd_names_async_dbus_scb (GObject *source_object,
get_ppd_names_async_cb,
data);
g_steal_pointer (&data);
-
- g_strfreev (ppds_names);
}
else
{