[gtk/fix-cups-backend-leak: 2/2] cups printbackend: Plug memory leaks




commit 62192cba6e77d1568fc67e169caef8d394d097ff
Author: Matthias Clasen <mclasen redhat com>
Date:   Fri Aug 12 18:44:25 2022 -0400

    cups printbackend: Plug memory leaks
    
    This loop has many early exits, and all of them
    need to free this info object that gets allocated
    at the beginning.

 modules/printbackends/gtkprintbackendcups.c | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)
---
diff --git a/modules/printbackends/gtkprintbackendcups.c b/modules/printbackends/gtkprintbackendcups.c
index 00ffc00f73..9a713da0e4 100644
--- a/modules/printbackends/gtkprintbackendcups.c
+++ b/modules/printbackends/gtkprintbackendcups.c
@@ -3726,7 +3726,10 @@ cups_request_printer_list_cb (GtkPrintBackendCups *cups_backend,
         attr = ippNextAttribute (response);
 
       if (attr == NULL)
-        break;
+        {
+          printer_setup_info_free (info);
+          break;
+        }
 
       while (attr != NULL && ippGetGroupTag (attr) == IPP_TAG_PRINTER)
         {
@@ -3737,6 +3740,7 @@ cups_request_printer_list_cb (GtkPrintBackendCups *cups_backend,
       if (info->printer_name == NULL ||
          (info->printer_uri == NULL && info->member_uris == NULL))
         {
+          printer_setup_info_free (info);
           if (attr == NULL)
             break;
           else
@@ -3747,7 +3751,10 @@ cups_request_printer_list_cb (GtkPrintBackendCups *cups_backend,
       iter = g_list_find_custom (GTK_PRINT_BACKEND_CUPS (backend)->temporary_queues_removed,
                                  info->printer_name, (GCompareFunc) g_strcmp0);
       if (iter != NULL)
-        continue;
+        {
+          printer_setup_info_free (info);
+          continue;
+        }
 
       if (info->got_printer_type)
         {


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