[gnome-control-center/gnome-3-36] printers: Fix leak of printer name in callbacks.



commit d6159620b18ce8334bb0c0e8b826b9348f5d54ee
Author: Robert Ancell <robert ancell canonical com>
Date:   Fri Oct 30 10:16:11 2020 +1300

    printers: Fix leak of printer name in callbacks.
    
    printer_set_ppd_async and printer_set_ppd_file_async copy the printer name, but
    this isn't freed in any cases that use these callback (the string isn't even
    used at all).

 panels/printers/pp-details-dialog.c | 4 ++--
 panels/printers/pp-utils.c          | 8 ++++----
 panels/printers/pp-utils.h          | 2 +-
 3 files changed, 7 insertions(+), 7 deletions(-)
---
diff --git a/panels/printers/pp-details-dialog.c b/panels/printers/pp-details-dialog.c
index 70e67cd63..c66c6d359 100644
--- a/panels/printers/pp-details-dialog.c
+++ b/panels/printers/pp-details-dialog.c
@@ -95,7 +95,7 @@ ppd_names_free (gpointer user_data)
     }
 }
 
-static void set_ppd_cb (gchar *printer_name, gboolean success, gpointer user_data);
+static void set_ppd_cb (const gchar *printer_name, gboolean success, gpointer user_data);
 
 static void
 get_ppd_names_cb (PPDName     **names,
@@ -140,7 +140,7 @@ search_for_drivers (PpDetailsDialog *self)
 }
 
 static void
-set_ppd_cb (gchar    *printer_name,
+set_ppd_cb (const gchar *printer_name,
             gboolean  success,
             gpointer  user_data)
 {
diff --git a/panels/printers/pp-utils.c b/panels/printers/pp-utils.c
index 5320903e6..53d6419a1 100644
--- a/panels/printers/pp-utils.c
+++ b/panels/printers/pp-utils.c
@@ -1501,7 +1501,7 @@ printer_set_ppd_async_dbus_cb (GObject      *source_object,
   /* Don't call callback if cancelled */
   if (!data->cancellable ||
       !g_cancellable_is_cancelled (data->cancellable))
-    data->callback (g_strdup (data->printer_name),
+    data->callback (data->printer_name,
                     result,
                     data->user_data);
 
@@ -1574,7 +1574,7 @@ printer_set_ppd_async (const gchar  *printer_name,
   return;
 
 out:
-  callback (g_strdup (printer_name), FALSE, user_data);
+  callback (printer_name, FALSE, user_data);
 
   if (data->cancellable)
     g_object_unref (data->cancellable);
@@ -1631,7 +1631,7 @@ printer_set_ppd_file_async_scb (GObject      *source_object,
   return;
 
 out:
-  data->callback (g_strdup (data->printer_name), FALSE, data->user_data);
+  data->callback (data->printer_name, FALSE, data->user_data);
 
   if (data->cancellable)
     g_object_unref (data->cancellable);
@@ -1693,7 +1693,7 @@ printer_set_ppd_file_async (const gchar  *printer_name,
   return;
 
 out:
-  callback (g_strdup (printer_name), FALSE, user_data);
+  callback (printer_name, FALSE, user_data);
 
   if (data->cancellable)
     g_object_unref (data->cancellable);
diff --git a/panels/printers/pp-utils.h b/panels/printers/pp-utils.h
index f1631426f..5a403f7a9 100644
--- a/panels/printers/pp-utils.h
+++ b/panels/printers/pp-utils.h
@@ -138,7 +138,7 @@ gchar      *printer_get_hostname (cups_ptype_t  printer_type,
                                   const gchar  *device_uri,
                                   const gchar  *printer_uri);
 
-typedef void (*PSPCallback) (gchar    *printer_name,
+typedef void (*PSPCallback) (const gchar *printer_name,
                              gboolean  success,
                              gpointer  user_data);
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]