]> Pileus Git - ~andy/gtk/commitdiff
Fix some refcounting issues in the print dialog
authorMatthias Clasen <mclasen@redhat.com>
Sat, 2 Apr 2011 02:02:38 +0000 (22:02 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Sat, 2 Apr 2011 02:05:02 +0000 (22:05 -0400)
gtk_tree_model_get returns a reference for objects, but the
printers in the model can be NULL,
https://bugzilla.gnome.org/show_bug.cgi?id=646446

gtk/gtkprintunixdialog.c

index d555c1b865034f8ad1a78cc5d2fd72c9d7c94759..0a7e6ac17bb81fbbf0e3c3779136f8a9ff2056e7 100644 (file)
@@ -774,13 +774,11 @@ void set_cell_sensitivity_func (GtkTreeViewColumn *tree_column,
   gtk_tree_model_get (tree_model, iter, PRINTER_LIST_COL_PRINTER_OBJ, &printer, -1);
 
   if (printer != NULL && !gtk_printer_is_accepting_jobs (printer))
-    g_object_set (cell,
-                  "sensitive", FALSE,
-                  NULL);
+    g_object_set (cell, "sensitive", FALSE, NULL);
   else
-    g_object_set (cell,
-                  "sensitive", TRUE,
-                  NULL);
+    g_object_set (cell, "sensitive", TRUE, NULL);
+
+  g_object_unref (printer);
 }
 
 static void
@@ -1009,10 +1007,8 @@ is_printer_active (GtkTreeModel       *model,
   GtkPrinter *printer;
   GtkPrintUnixDialogPrivate *priv = dialog->priv;
 
-  gtk_tree_model_get (model,
-                      iter,
-                      PRINTER_LIST_COL_PRINTER_OBJ,
-                      &printer,
+  gtk_tree_model_get (model, iter,
+                      PRINTER_LIST_COL_PRINTER_OBJ, &printer,
                       -1);
 
   if (printer == NULL)
@@ -1082,8 +1078,10 @@ default_printer_list_sort_func (GtkTreeModel *model,
 
   g_free (a_name);
   g_free (b_name);
-  g_object_unref (a_printer);
-  g_object_unref (b_printer);
+  if (a_printer)
+    g_object_unref (a_printer);
+  if (b_printer)
+    g_object_unref (b_printer);
 
   return result;
 }